2

我的桌子:

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

4

2 回答 2

6

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

于 2013-08-01T15:31:36.973 回答
0

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

EXPLAIN SELECT *
FROM test USE INDEX (textIndex) ...
于 2013-08-01T15:33:09.393 回答