如果我像这样创建一个表:
CREATE TABLE something(column1,column2,PRIMARY KEY(column1,column2));
column1和column2本身都不是唯一的。但是,我将对column1进行大部分查询。
多列主键是否分别为两列创建索引?我认为如果你指定一个多列主键,它会将它们一起索引,但我真的不知道。
在column1上添加UNIQUE INDEX会有什么性能优势吗?
答案 0 :(得分:1)
可能没有性能优势,因为针对col1=xxx and col2=yyy
的查询将使用与col1=zzz
之类的查询相同的索引而不提及col2。但我的经验只有Oracle,SQL Server,Ingres和MySQL。我不确定。
答案 1 :(得分:1)
您当然不希望在第1列添加唯一索引,如您所说:
column1和column2本身都不是唯一的。
如果第一列出现,它将在大多数数据库的多列索引中排在第一位,因此可能会被使用。第二列是可能不使用索引的列。除非你看到问题,否则我不会在第二列上添加一个,我会根据你上面写的评论添加一个索引而不是唯一索引。
但SQL lite必须有一些方法可以像大多数其他数据库一样查看它的用途,对吧?设置Pk并查看只有column1的查询是否正在使用它。