MYSQL索引失效

1、最佳左前缀
符合索引,遵循最佳左前缀,不能跳过中间值
2、索引上做操作
不要在索引上做任何操作,计算,函数,类型转换等,都会导致索引失效
3、存储引擎不能使用索引中范围条件最右边的列
在范围查找后,会导致其后的索引失效
4、减少select *的使用
只访问索引列的查询,尽量使用覆盖索引
5、MYSQL 中!=,<>导致索引失效
6、is null,is not null会导致索引失效
7、like以通配符开头会导致索引失效
c% ---索引失效
c... ---索引失效
abc% ----索引不失效
如何避免两边%%,且索引不会失效,建议使用覆盖索引,可以避免全表扫描
8、字符串不加单引号会导致索引失效
9、少用OR,用它来做连接的时候会导致索引失效
10、在索引上使用函数,会导致索引失效,想避免在索引上使用函数而导致索引失效,可以使用覆盖索引来解决
  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL索引失效是指在查询过程中,尽管建立了索引,但查询计划却没有使用索引,导致查询性能下降的情况。根据引用中提到的常见原因,可以导致MySQL索引失效的原因有以下几点: 1. 索引未被充分利用:有时候虽然使用了索引,但并未完全利用到索引的所有列。例如,在一个联合索引中,只使用了部分列进行筛选,而未使用到其他列。 2. 不等于操作符导致索引失效:使用不等于操作符(!=或<>)会导致索引失效,因为MySQL无法高效地利用索引来处理不等于的查询。 3. is null和is not null的差异:使用is null条件可以利用索引进行查询优化,而is not null无法使用索引进行优化。 4. like以通配符%开头:当使用like操作符以通配符%开头时,索引会失效。因为通配符%开头的模糊匹配无法使用B-tree索引。 5. OR语句中存在非索引列:OR语句中,只要存在非索引列,就会导致索引失效MySQL无法同时使用多个索引来处理这种情况。 综上所述,为避免MySQL索引失效,我们需要注意以下几点:优化索引设计,充分利用索引的所有列;避免使用不等于操作符;注意使用is null和is not null的差异;避免在like操作符中以通配符%开头;尽量避免使用OR语句中存在非索引列的查询。这样可以提高查询性能并避免索引失效。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysql索引失效的常见9种原因详解](https://blog.csdn.net/qq_63815371/article/details/124337932)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【第三篇】MySQL 索引失效的常见原因【重点】](https://blog.csdn.net/weixin_42039228/article/details/123255722)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值