首页 >数据库 >mysql教程 >SQL'LIKE”与'=”:什么时候一个比另一个更快?

SQL'LIKE”与'=”:什么时候一个比另一个更快?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-04 16:58:40193浏览

SQL `LIKE` vs `=`: When Is One Faster Than the Other?

SQL 'like' 与 '=' 性能:上下文分析

“like”或“=”哪个性能更好的问题使用 SQL 通配符的问题过去已得到解决,但传统观点是“=”更快。但是,考虑查询的特定上下文非常重要。

在列包含有限数量的固定、硬编码的 varchar 标识符的情况下,任务是选择与其中之一匹配的所有行,看来“喜欢”会有优势。 “Like”只需要测试几个初始字符是否匹配,而“=”必须比较整个字符串。

但是,正如 John Nelson 的一篇文章(存档于https://web.archive.org/web/20150209022016/http://myitforum.com/cs2/blogs/jnelson/archive/2007/11/16/108354.aspx),索引使用'like'的规则细微差别:

  • 如果过滤器在索引字段上使用“=”,可能会使用 INDEX/CLUSTERED INDEX SEEK。
  • 如果使用不带通配符的 'like',索引用法与 '=' 的情况类似。
  • 如果使用 'like'开头带有通配符,可以对索引的全部或部分范围使用索引扫描。
  • 如果'like' 首先与字符串一起使用,后与通配符一起使用,可以使用 INDEX SEEK 来查找匹配的行,然后检查这些行是否完全匹配。

因此,'like' 的性能与“=”取决于特定的查询上下文、通配符的位置以及索引的存在。在硬编码标识符数量有限的情况下,通过完整字符串比较,“like”确实可能比“=”执行得更快。但是,评估具体用例并考虑索引优化以确定最佳方法非常重要。

以上是SQL'LIKE”与'=”:什么时候一个比另一个更快?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn