SQLite多列主键是否需要额外的索引?

时间:2010-06-16 19:06:34

标签: sql database database-design sqlite

如果我像这样创建一个表:

CREATE TABLE something(column1,column2,PRIMARY KEY(column1,column2));

column1和column2本身都不是唯一的。但是,我将对column1进行大部分查询。

多列主键是否分别为两列创建索引?我认为如果你指定一个多列主键,它会将它们一起索引,但我真的不知道。

在column1上添加UNIQUE INDEX会有什么性能优势吗?

2 个答案:

答案 0 :(得分:1)

可能没有性能优势,因为针对col1=xxx and col2=yyy的查询将使用与col1=zzz之类的查询相同的索引而不提及col2。但我的经验只有Oracle,SQL Server,Ingres和MySQL。我不确定。

答案 1 :(得分:1)

您当然不希望在第1列添加唯一索引,如您所说:

  

column1和column2本身都不是唯一的。

如果第一列出现,它将在大多数数据库的多列索引中排在第一位,因此可能会被使用。第二列是可能不使用索引的列。除非你看到问题,否则我不会在第二列上添加一个,我会根据你上面写的评论添加一个索引而不是唯一索引。

但SQL lite必须有一些方法可以像大多数其他数据库一样查看它的用途,对吧?设置Pk并查看只有column1的查询是否正在使用它。