面试:你设计索引的原则是什么?怎么避免索引失效?
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 来源:稀土掘金
用一个例子来演示会更加清晰
分类:
mysql
, postgresql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
2021-08-20 app登陆到离线的时候,报错:数据格式转换错误n I/O error has occurred while writing a response message entity to the container output stream. org.glassfish.jersey.server.internal.process.MappableException
2019-08-20 getopts的使用 + 创建空目录
2018-08-20 sudo 其他用户执行命令