索引法则--少用OR,它在连接时会索引失效

Posted cyhbyw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了索引法则--少用OR,它在连接时会索引失效相关的知识,希望对你有一定的参考价值。

 

Mysql 系列文章主页 

 

===============

 

1 准备数据

1.1 建表

DROP TABLE IF EXISTS staff;
CREATE TABLE IF NOT EXISTS staff (
    id INT PRIMARY KEY auto_increment,
    name VARCHAR(50),
    age INT,
    pos VARCHAR(50) COMMENT \'职位\',
    salary DECIMAL(10,2)
);

1.2 插入数据

INSERT INTO staff(name, age, pos, salary) VALUES(\'Alice\', 22, \'HR\', 5000);

2 测试&Explain分析

2.1 创建索引

CREATE INDEX idx_nameAgePos ON staff(name, age, pos);

2.2 测试

EXPLAIN SELECT * FROM staff WHERE name = \'Alice\' or name = \'Bob\';

结果:type=all,索引失效,全表扫描。

3 结论

OR连接时会索引失效

 

以上是关于索引法则--少用OR,它在连接时会索引失效的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 进阶 索引 -- 索引使用原则(验证索引效率最左前缀法则范围查询索引失效情况SQL提示覆盖索引前缀索引单列索引与联合索引)索引设计原则

MySQL 进阶 索引 -- 索引使用原则(验证索引效率最左前缀法则范围查询索引失效情况SQL提示覆盖索引前缀索引单列索引与联合索引)索引设计原则

MySQL索引失效原因

Mysql防止索引失效原则

Mysql 索引优化

MySQL高级 之 索引失效与优化详解