page contents

什么情况下索引会失效?即查询不走索引?

轩辕小不懂 发布于 2021-10-23 16:53
阅读 655
收藏 0
分类:资源下载
2227
Nen
Nen
- 程序员

下面列举几种不走索引的 SQL 语句:

1、索引列参与表达式计算:

1 SELECT 'sname' FROM 'stu' WHERE 'age' + 10 = 30;

2、 函数运算:

1 SELECT 'sname' FROM 'stu' WHERE LEFT('date',4) < 1990; 

3、%词语%–模糊查询:

SELECT * FROM 'manong' WHERE `uname` LIKE '码农%' -- 走索引

SELECT * FROM 'manong' WHERE `uname` LIKE '%码农%' -- 不走索引

4、 字符串与数字比较不走索引:

“`mysql

CREATE TABLE 'a' ('a' char(10));

EXPLAIN SELECT * FROM 'a' WHERE 'a'="1" — 走索引

EXPLAIN SELECT * FROM 'a'WHERE 'a'=1 — 不走索引,同样也是使用了函数运算“

5、 查询条件中有 or ,即使其中有条件带索引也不会使用。换言之,就是要求使用的所有字段,都必须建立索引:

1 select * from dept where dname='xxx' or loc='xx' or deptno = 45;

6、正则表达式不使用索引。

7、 MySQL 内部优化器会对 SQL 语句进行优化,如果优化器估计使用全表扫描要比使用索引快,则不使用索引。

请先 登录 后评论