索引失效的十大杂症
发布时间:2021-03-07 15:58:09 所属栏目:外闻 来源:互联网
导读:结论: 对于or+没有索引的age这种情况,假设它走了userId的索引,但是走到age查询条件时,它还得全表扫描,也就是需要三步过程:全表扫描+索引扫描+合并 如果它一开始就走全表扫描,直接一遍扫描就完事。 mysql是有优化器的,处于效率与成本考虑,遇到or条件
|
&结论:
注意: 如果or条件的列都加了索引,索引可能会走的,大家可以自己试一试。 二、如何字段类型是字符串,where时一定用引号括起来,否则索引失效
假设demo表结构如下: 与结论: 为什么第一条语句未加单引号就不走索引了呢?这是因为不加单引号时,是字符串跟数字的比较,它们类型不匹配,MySQL会做隐式的类型转换,把它们转换为浮点数再做比较。 三、like通配符可能导致索引失效。 并不是用了like通配符,索引一定失效,而是like查询是以%开头,才会导致索引失效。
表结构: 论: like查询以%开头,会导致索引失效。可以有两种方式优化:
附: 索引包含所有满足查询需要的数据的索引,称为覆盖索引(Covering Index)。 四、联合索引,查询时的条件列不是联合索引中的第一个列,索引失效。
表结构:(有一个联合索引 idx_userid_age, userId在前, age在后) (编辑:四平站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

