索引的建立原则, 如何避免索引失效
源自面试鸭
建立索引
1.经常使用的字段
2.字段最好唯一
3.字段类型尽量用数值型,减少字符类型
4.对于带条件和排序字段的字段建立索引
5.频繁出现在where条件后面的字段
6.字段应选差异性较大的字段,否则失去了索引的意义。
如何避免索引失效
1.最佳左前缀法则 - 如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过复合索引中间列。
2.不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描。
3.存储引擎不能使用索引中范围条件右边的列。
4.尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *。
5.mysql在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描。
6. is null, is not null 也无法使用索引。
7.like以通配符开头(’%abc…’),mysql索引失效会变成全表扫描的操作。
8.字符串不加单引号索引失效。
9.少用or,用它来连接时会索引失效。
使用索引的缺点
1 、会使得写操作的性能下降,因为底层使用的是B+树,增删元素为了保持索引的查询效率,需要对树的结构重新排列,从而使得写操作的效率下降。
2、 索引其实是很庞大的,需要占用额外的磁盘空间。当然如今磁盘很便宜,可能不太在乎!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix