使用主键创建多列索引

时间:2013-08-01 15:26:29

标签: mysql sql explain

我的表:

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

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

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