面试:你设计索引的原则是什么?怎么避免索引失效?

1.设计索引的原则是什么?

1. 为频繁查询的字段建立索引
2.选择区分度大的列作为索引
性别 男 女 加索引和不加区别不大
超过基线,比如查询的数据集大于30%

3.尽量为ORDER BY 和 GROUP BY 后面的字段建立索引
因为在GROUP BY 的时候也要先根据 GROUP BY 后面的字段排序,然后在执行聚合操作。
如果 GROUP BY 后面的字段已经建立了索引,那么MySQL 就不需要再去排序,也就不会产生临时表。

 

 

2. 索引失效的常见场景

使用 OR 关键字会导致索引失效,不过如果要想使用OR 又不想让索引失效,那就得需要为or条件中的每个列都建立索引。这很显然是和上面的不要建立太多的索引相违背。
联合索引如果不遵循最左前缀原则,那么索引也将失效
使用模糊查询的时候以%开头也会导致索引失效(这里就不再重复原因了,因为前面的文章都是说过了,这里就是为了帮助大家再会回忆下)
索引列如果使用了隐式转换也会导致索引失效

作者:HollisChuang
链接:https://juejin.cn/post/6960470472077082638
来源:稀土掘金

 

posted @ 2022-08-20 21:44  littlevigra  阅读(58)  评论(1编辑  收藏  举报