在具有多列的表上创建索引

时间:2015-10-06 06:18:12

标签: sql

如果我经常使用此查询,我是sql的新手:

SELECT * FROM student WHERE key1=? AND key2=?

我想在student上创建索引,这两者之间的主要区别是什么?

CREATE INDEX idx_key1 on student (key1);
CREATE INDEX idx_key2 on student (key2);

CREATE INDEX idx_keys on student (key1, key2);

谢谢!

1 个答案:

答案 0 :(得分:1)

第二个(java -jar start.jar --help )将返回您在单个索引查找中所需的所有行(以查找行)+键查找以获取列。

如果创建2个单列索引,则只能将其中一个用于索引搜索。然后,对于每个返回的行,您需要键查找以获取另一个键并过滤结果。或者数据库引擎只会决定只进行表扫描和过滤更快。

所以第二个对你的查询要好得多。