如果我经常使用此查询,我是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);
谢谢!
答案 0 :(得分:1)
第二个(java -jar start.jar --help
)将返回您在单个索引查找中所需的所有行(以查找行)+键查找以获取列。
如果创建2个单列索引,则只能将其中一个用于索引搜索。然后,对于每个返回的行,您需要键查找以获取另一个键并过滤结果。或者数据库引擎只会决定只进行表扫描和过滤更快。
所以第二个对你的查询要好得多。