复合主键限制?

时间:2013-06-06 15:57:27

标签: sql sqlite indexing primary-key composite

如果我从4列创建复合主键,可以吗?像:

PRIMARY KEY(name, slug, type, parent)

因此,不应该有多个具有相同名称,slug,type和parent的行。列太多了吗?它会影响性能吗?

我正在使用sqlite btw。

2 个答案:

答案 0 :(得分:2)

SQLite的限制为2000 columns in an index

4列索引的性能与3列索引的性能差别不大。

但是,通用性能声明并不有趣。 对您来说重要的是这个表格结构是否足够适合您,您只能通过测量才能找到它。


请注意,如果您只对一列进行查找,则使用该列must be the first one in an index以允许使用索引。

答案 1 :(得分:1)

通常建议拥有一个独特的ID字段。比较INTEGER值比比较字符串更快,因此复合键会对性能产生负面影响。

如果您要加入其他表,添加具有以下数据类型的列将是理想的:

 INTEGER PRIMARY KEY AUTOINCREMENT