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';
Dcr163的博客
http://dcr163.cn/213.html(转载时请注明本文出处及文章链接)