mysql索引未生效情况

本文详细解析MySQL中索引失效的多种情况,包括使用LIKE语句以通配符开头、联合索引的不当使用、索引列上的操作、字符串类型未正确引用、OR条件、数据列重复值过多等,帮助理解并避免索引失效导致的全表扫描。
摘要由CSDN通过智能技术生成

索引未生效情况

  • 使用了like,且以通配符开头('%abc...')mysql索引失效会变成全表扫描的操作
  • 加了联合索引,如果where条件中是OR关系,索引不起作用
  • 加了联合索引,但是使用时没有符合最左原则(联合索引采用最左原则);
  • 不要在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描
    SELECT * FROM `tbl_shopmall_product_template` WHERE LEFT(productName,2) = '冬瓜吊瓜'   会导致全表扫描
  • 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
    SELECT * FROM `tbl_shopmall_product_template` WHERE  productName = 1        扫全表
  • mysql 在使用不等于(!= 或者<>)的时候有时候无法使用索引会导致全表扫描
  • mysql中,如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)。要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引
  • 如果某个数据列里包含着许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含了净是些诸如“0/1”或“Y/N”等值,就没有必要为它创建一个索引。
  • 如果mysql估计使用全表扫描要比使用索引快,则不使用索引
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东境物语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值