最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

【Mysql】复合主键的索引

来源:博客园


(资料图片仅供参考)

复合主键在where中使用查询的时候到底走不走索引呢?例如下表:

create table index_test(    a int not null,    b int not null,    c int not null,    d int null,    primary key (a, b, c));

当执行以下SQL的时候到底走不走索引呢?

  1. SELECT * FROM index_test WHERE a = 1;
  2. SELECT * FROM index_test WHERE a = 1 AND b = 1;
  3. SELECT * FROM index_test WHERE a = 1 AND b = 1 AND c = 1;
  4. SELECT * FROM index_test WHERE b = 1;
  5. SELECT * FROM index_test WHERE b = 1 AND c = 1;
  6. SELECT * FROM index_test WHERE a = 1 AND c = 1;

Explain结果:

  1. 使用索引
  2. 使用索引
  3. 使用索引
  4. 不使用索引
  5. 不使用索引
  6. 使用索引

结论:Mysql复合主键的顺序十分重要,WHERE查询条件中会按列匹配复合主键,匹配上则使用索引直到匹配不上为止。例如上表,WHERE条件中有a则使用a的索引,有a,b则使用a,b的索引;如果没有a,只有b或c,则不走索引;有a,中间无b,有c则只使用a的索引。

关键词: