优秀的编程知识分享平台

网站首页 > 技术文章 正文

MySQL中索引失效案例详解下(mysql索引坏处)

nanyue 2024-10-28 16:38:57 技术文章 8 ℃


MySQL中使用or使索引失效

  1. 检索语句
mysql>select * from user name="jack" or name="tim"
  1. 查看执行结果
mysql>explain select * from user name="jack" or name="tim";

结论:使用or语句导致索引失效,且全表扫描。


MySQL中使用like使索引失效

  1. like语句中使用前后%和使用前%和后%检索到的执行结果都不不一样
  1. 使用后前%检查执行结果
mysql> explain select * from user where name like "%ac";

结果:使用后%的情况是执行没有使用到索引,导致索引失效并全表扫描


  1. 使用后%检查执行结果
explain select * from user where name like "ac%";

结果:使用后%的情况是执行结果使用到了索引


  1. 执行语句中必须前后都要使用%
mysql> explain select * from user where name like "%ac%";
mysql> explain select id from user where name like "%ac%";
mysql> explain select namefrom user where name like "%ac%";
mysql> explain select age from user where name like "%ac%";
mysql> explain select pos from user where name like "%ac%";
mysql> explain select id,name,age,pos from user where name like "%ac%";
mysql>explain select * from user where name like "%ac%";
mysql>explain select id,name,age,pos,in_time from user where name like "%ac%";


案例结论分析对比:

1、在使用%号的时候,%在后边使用往往能够使用到索引,%使用在前边就会导致索引失效从而全表进行扫描

2、如果实际使用环境中需要前后都使用%号,就必须使用联合索引来解决,否则索引会失效,还需要索引列覆盖查询。


点击关注发私信或评论交流文章中有问题的地方,相互学习和答疑

最近发表
标签列表