MySQL 最左前缀(Leftmost Prefix) & 组合索引(复合索引,多列索引)

Posted Trace Spaces

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 最左前缀(Leftmost Prefix) & 组合索引(复合索引,多列索引)相关的知识,希望对你有一定的参考价值。

资料来源于网络,仅供参考学习。

CREATE TABLE test(
a INT,
b INT,
c INT,
KEY idx(a,b,c)
);

优: SELECT * FROM test WHERE a=10 AND b>50;
差: SELECT * FROM test WHERE b>50;

优: SELECT * FROM test ORDER BY a;
差: SELECT * FROM test ORDER BY b;
差: SELECT * FROM test ORDER BY c;

优: SELECT * FROM test WHERE a=10 ORDER BY a;
优: SELECT * FROM test WHERE a=10 ORDER BY b;
差: SELECT * FROM test WHERE a=10 ORDER BY c;

优: SELECT * FROM test WHERE a>10 ORDER BY a;
差: SELECT * FROM test WHERE a>10 ORDER BY b;
差: SELECT * FROM test WHERE a>10 ORDER BY c;

优: SELECT * FROM test WHERE a=10 AND b=10 ORDER BY a;
优: SELECT * FROM test WHERE a=10 AND b=10 ORDER BY b;
优: SELECT * FROM test WHERE a=10 AND b=10 ORDER BY c;

优: SELECT * FROM test WHERE a=10 AND b=10 ORDER BY a;
优: SELECT * FROM test WHERE a=10 AND b>10 ORDER BY b;
差: SELECT * FROM test WHERE a=10 AND b>10 ORDER BY c;

 































以上是关于MySQL 最左前缀(Leftmost Prefix) & 组合索引(复合索引,多列索引)的主要内容,如果未能解决你的问题,请参考以下文章

联合索引的最左前缀匹配原则

Index的“最左前缀规则”是不是适用于SQL Server?

MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序

MySQL -- 回表 | 索引覆盖 | 索引下推 | 最左前缀原则 介绍

MySQL -- 回表 | 索引覆盖 | 索引下推 | 最左前缀原则 介绍

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