【问题标题】:creating a multi column index with the primary key使用主键创建多列索引
【发布时间】:2013-08-02 14:58:33
【问题描述】:

我的桌子:

CREATE TABLE test (
  id INT AUTO_INCREMENT,
  anotherID INT,
  PRIMARY KEY (id),
  INDEX testIndex (id, anotherID)
);
INSERT INTO test VALUES (1,1),(2,1),(3,1),(4,1);

我的查询:

EXPLAIN SELECT *
FROM test
WHERE id = 1
  AND anotherID = 1;

仅使用 PRIMARY 键。然而,testIndex 不是。我的问题是……为什么?由于 SELECT 引用了 id 和 anotherID 中的值,不应该使用 testIndex 吗?

SQL 小提琴:

http://sqlfiddle.com/#!2/b833d9/1

【问题讨论】:

  • PK满足条件为什么要使用testIndex?

标签: mysql sql explain


【解决方案1】:

主键是唯一的,因此甚至不需要额外的检查。它不会比主键更独特。所以在这种情况下使用其他索引没有额外的好处。

【讨论】:

    【解决方案2】:

    好吧,MySql 显然认为主键足以进行查询。但是,您可以这样做:

    EXPLAIN SELECT *
    FROM test USE INDEX (textIndex) ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-23
      • 2017-02-28
      • 2010-10-06
      • 2016-01-10
      • 2012-03-27
      • 2021-07-06
      • 2016-03-01
      相关资源
      最近更新 更多