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

Sql 在具有多列的表上创建索引,sql,Sql,我是sql新手,如果我经常使用此查询: SELECT * FROM student WHERE key1=? AND key2=? 我想在学生上创建索引,下面这两者的主要区别是什么 CREATE INDEX idx_key1 on student (key1); CREATE INDEX idx_key2 on student (key2); 及 谢谢 第二个(CREATE INDEX idx_keys on student(key1,key2))将在单个索引查找中返回所需的所有行(查找行)

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

SELECT * FROM student WHERE key1=? AND key2=?
我想在
学生
上创建索引,下面这两者的主要区别是什么

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

谢谢

第二个(
CREATE INDEX idx_keys on student(key1,key2)
)将在单个索引查找中返回所需的所有行(查找行)+键查找以获取列

如果创建两个单列索引,则其中只有一个可用于索引查找。然后,对于每个返回的行,您需要进行键查找以获取另一个键并过滤结果。或者DB引擎将简单地决定只进行表扫描和筛选更快

因此,第二个更适合您的查询。

看看这个,这可能也有帮助:
CREATE INDEX idx_keys on student (key1, key2);