美文网首页
18 | 为什么这些SQL语句逻辑相同,性能却差异巨大?

18 | 为什么这些SQL语句逻辑相同,性能却差异巨大?

作者: 那年_匆匆 | 来源:发表于2019-07-16 00:11 被阅读0次

今天我给你举了三个例子,其实是在说同一件事儿,即:

对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。

第二个例子是隐式类型转换,第三个例子是隐式字符编码转换,它们都跟第一个例子一样,因为要求在索引字段上做函数操作而导致了全索引扫描。

MySQL 的优化器确实有“偷懒”的嫌疑,即使简单地把 where id+1=1000 改写成 where id=1000-1 就能够用上索引快速查找,也不会主动做这个语句重写。

因此,每次你的业务代码升级时,把可能出现的、新的 SQL 语句 explain 一下,是一个很好的习惯。

感谢极客时间:https://time.geekbang.org/column/article/74059

相关文章

网友评论

      本文标题:18 | 为什么这些SQL语句逻辑相同,性能却差异巨大?

      本文链接:https://www.haomeiwen.com/subject/vcjakctx.html