mysql不等于走索引吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql不等于走索引吗相关的知识,希望对你有一定的参考价值。
不一定的,在很多场景下,NOT IN、不等于两类操作使用二级索引的成本远超于全表扫描的成本,查询优化器按照成本选择"最优执行计划",导致查询不走二级索引。但不能因此就彻底判断NOT IN或<>两类操作不能走索引。 参考技术A不一定, 原因有二:
我们多数情况下使用 != 只是筛选掉少量数据, 这种情况下走索引树找出不符合条件的值然后返回其他符合条件的值, 跟直接做全表扫描的效率其实相差不大. 如果筛选掉的数据的量很大, 剩下的数据的量很少, 这种情况下有可能会走索引.
更重要的是, 多数情况下我们是会select表里的多个列, 而在二级索引树下只会有二级索引的索引值和主键值, 其他的值都要回表回到主键索引上面查, 有多少个符合条件的数据就要回表多少次, 这种查询效率简直是要比全表扫描差得多.
为什么group by 不走索引
您好,我来为您解答:对每条记录做group by所以优化器会理解为不适用索引效率会更高
group by要走索引的时候一定得加个条件 is not null才行啊
不要对索引字段用函数,如果你的字段visit_time是date类型,可以改成:
visit_time between to_date(\'20120903\',\'yyyymmdd\') and to_date(\'20120904\',\'yyyymmdd\')
如果我的回答没能帮助您,请继续追问。 参考技术A 对每条记录做group by所以优化器会理解为不适用索引效率会更高
以上是关于mysql不等于走索引吗的主要内容,如果未能解决你的问题,请参考以下文章