如果我有一张 table
create table sv ( id integer, data text )
和一个索引:
create index myindex_idx on sv (id,text)
如果我进行查询,这仍然有用吗
select * from sv where id = 10
我询问的原因是我正在查看一组没有任何索引的表,并看到了选择查询的不同组合。有些只使用一列,其他的不止一列。我是否需要为两个集合都有索引,还是一个全包索引可以?
我正在添加索引以实现比全表扫描更快的查找。
示例(基于 Matt Huggins 的回答):
select * from table where col1 = 10
select * from table where col1 = 10 and col2=12
select * from table where col1 = 10 and col2=12 and col3 = 16
都可以被索引表 (co1l1,col2,col3) 覆盖,但是
select * from table where col2=12
需要另一个索引吗?
最佳答案
它应该很有用,因为 (id, text) 上的索引首先按 id 索引,然后分别按文本索引。
编辑:当我说它“有用”时,我的意思是它在查询速度/优化方面很有用。正如 Sune Rievers 指出的那样,这并不意味着您将获得仅给定 ID 的唯一记录(除非您在表定义中指定 ID 为唯一记录)。
关于sql - 多列索引 - 仅对一列进行查询时可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1865423/