复合索引最左特性

简介: 复合索引最左特性

1、创建复合索引

ALTER TABLE employee ADD INDEX idx_name_salary (name,salary)

2、满足复合索引的最左特性,哪怕只是部分,复合索引生效

SELECT * FROM employee WHERE NAME='小王'

3、没有出现左边的字段,则不满足最左特性,索引失效

SELECT * FROM employee WHERE salary=5000

4、复合索引全使用,按左侧顺序出现 name,salary,索引生效

SELECT * FROM employee WHERE NAME='小王' AND salary=5000

5、虽然违背了最左特性,但MySQL执行SQL时会进行优化,底层进行颠倒优化

SELECT * FROM employee WHERE salary=5000 AND NAME='小王'

6、理由

复合索引也称为联合索引,当我们创建一个联合索引的时候,如(k1,k2,k3),相当于创建了(k1)、(k1,k2)和(k1,k2,k3)三个索引,这就是最左匹配原则。联合索引不满足最左原则,索引一般会失效。

 

相关文章
|
2月前
|
存储 关系型数据库 MySQL
MySQL索引简介(包含索引优化,索引失效,最左前缀简洁版)
MySQL索引简介(包含索引优化,索引失效,最左前缀简洁版)
40 0
|
2月前
|
算法 前端开发
2629. 复合函数
2629. 复合函数
24 0
|
SQL 关系型数据库 MySQL
索引最左前缀原则
索引最左前缀原则
58 0
|
存储 索引
为什么范围后索引会失效 存储引擎不能使用索引中范围条件右边的列
比如说有三个字段 a b c,建立复合索引a_b_c。此时叶子节点的数据排序后可能为
83 0
|
存储 SQL 关系型数据库
MySql索引详解-各种索引的定义与区别和应用
什么是索引?索引的作用,有无索引的区别。
163 0
MySql索引详解-各种索引的定义与区别和应用
|
SQL 关系型数据库 MySQL
十七、复合索引最左特性
十七、复合索引最左特性
51 0
|
存储 SQL 缓存
B+树索引使用(9)分组、回表、覆盖索引(二十一)
B+树索引使用(9)分组、回表、覆盖索引(二十一)
|
关系型数据库 MySQL 索引
二十四、复合索引前导列
二十四、复合索引前导列
236 0
|
关系型数据库 MySQL 索引
正确建立索引以及最左前缀原则
正确建立索引以及最左前缀原则http://www.bieryun.com/3128.html 1. 索引建立的原则 用于索引的最好的备选数据列是那些出现在WHERE子句、join子句、ORDER BY或GROUP BY子句中的列。
1324 0