梦想之家

Mysql SELECT查询语句索引在以下情况下不能使用

Mysql 表的索引在以下情况下不能使用

 1.对索引关键字字段使用了函数将导致索引无法使用。

SELECT * FROM test WHERE substring( name,1,2 )='ad';


 2.对索引字段进行模糊查询时,模式的第一个字符是通配符时,将导致索引无法使用。

SELECT * FROM test WHERE name LIKE '%ad%';


 3.违反最左前缀原则的SELECT语句,将导致索引无法使用。

  首先创建一个组合索引

  CREATE INDEX idx_name ON test(name,desc);

下面的SELECT语句就不能使用索引

  SELECT * FROM test WHERE desc='ad';

  下面的SELECT语句就能使用索引

  SELECT * FROM test WHERE name='ad';


 4.使用不等于(not操作符、!= 或者 <> ) 作为查询条件,将导致索引无法使用。

SELECT * FROM test WHERE name NOT LIKE 'ad%';


 5.索引值的数据类型与索引字段不同,虽然Mysql能够进行数据类型转换,但却不会使用索引。

  下面未使用索引

  SELECT * FROM test WHERE name=1111;

  下面使用索引

  SELECT * FROM test WHERE name='1111';


image.png
image.png
image.pngimage.pngimage.png

相关推荐

您此刻的心情: