很早之前就听别人说in 不走索引,但是一直没证实过,昨天在工作中用到了in所以在上班的时候突发奇想,使用mysql 的explain 关键字看下一条sql走不走索引,sql 如下所示:
explain SELECT
*
FROM
lg_order
WHERE
logistics_number IN (
'03245100007990077',
'0324510000799007',
'0323920000077348500001',
'0329660000077348501001',
'0322340000799007734',
'0283920000799009498',
'132902052979900773485',
'03215700007998558001',
'132284314879900s779001',
'1329080973077348560001',
'13292709257990077348561001',
'1321640241777348562s001',
'1324100421799007734ss8563001',
'13224702197990077348561',
'0326200000799007734s86001',
'1327550457799007767001',
'132836013379900768001',
'132760071979900',
'132249127779900')
如上图所示,这里用到了in,但是这条sql 还是走了索引,如下图:
in索引的说明
后来通过查询网上的文章(如下所示)得知in 不一定不走索引,只有使用索引会导致比不用索引的性能还差则会不走索引,一般这个范围在数据量的百分之三十左右,超过百分之三十就不走索引了
MySQL中in到底走不走索引?_一个技术渣渣的博客-CSDN博客_in走不走索引explain介绍mysql中explain关键字可以模拟MySQL优化器执行SQL语句,是一个可以很好的分析SQL语句或表结构的性能瓶颈。explain的使用方法:explain + sql语句,下面我们先来执行下explain语句EXPLAIN SELECT * FROM `user` WHERE created_time > "2020-03-08";执行结果如下:可以看到有几个返回参数:id、select_type、table、partitions、type、p.https://blog.csdn.net/kevinxxw/article/details/109567275
索引的级别
另外索引是有一定级别的,级别越高性能越好,以下这篇文章有说明:
explain 关键字
explain 关键字不懂,参考这篇文章: