首页 > 解决方案 > 对于这个 SQL Zoo 问题,哪个查询更快

问题描述

我在 SQL Zoo 上解决了这个问题

查找首都和名称,其中首都是国家名称的扩展。您应该包括墨西哥城,因为它比墨西哥长。您不应包括卢森堡,因为首都与国家相同。

有两种解决方案

SELECT capital,name
FROM world
WHERE capital LIKE concat(name,'_%')


SELECT name, capital FROM world WHERE capital LIKE concat('%', name, '%') AND capital > name;


谁能告诉我哪个会更快,为什么?

提前致谢

标签: sql

解决方案


这两个查询不做同样的事情——尽管它们可能适用于您正在使用的数据集。

特别是,在第二个中,like模式以通配符 ( '%') 开头。这会减慢处理速度。更重要的是,当模式以通配符开头时,不能使用标准索引。

最后,在代表国家/地区的数百行数据集上,性能差异不太可能引起注意。


推荐阅读