0

考虑SQL表雇主。2列或多个索引上的SQL-1索引

列A - (int)唯一标识列。在选择查询中不用作where子句的一部分。

列B - (int)非唯一列。用于选择查询,作为where子句的一部分。

哪个索引的下面的选择是用于不屑数据库表实现具有低维护性能良好更好

1)1簇,对列上的唯一,主键和1个非聚集在B列

索引

OR

2)1聚簇,在列B唯一的,主键,A(复合主键)

OR

3)1列上有1个非聚簇唯一主键和B列上有1个聚簇索引

也欢迎其他任何建议。在此先感谢

+0

列A将用在Where子句中。如果是,那么第二个索引不会有帮助。订单在索引中非常重要,并且有多列。 –

+0

什么RDBMs?我认为一些细节将是供应商特定的。 – 2017-06-16 09:55:58

+0

列A不会用作where子句的一部分 –

回答

0

与选项1一起去。
创建主键时总是针对最短的列。原因是此列将用于所有其他索引。另外我希望当你说身份时,你不是指随机生成的价值,因为这会伤害你的写作表现。

+0

谢谢。是的,它是按顺序递增的。关于选项3? (编辑一段时间后)。 –

+0

通常,聚集索引是在ID列上生成的。理想情况下,这是独一无二的。当你创建另一张表时,让我们说雇员,那么你很可能会参考雇主表中的ID列。而且由于您拥有聚集索引,您可以快速访问特定员工的所有雇主数据。记住聚簇索引意味着数据根据该列进行物理排序。 –

0

选择第一个,第二个将填充大空间,因为它是聚集在一起并且很难陪伴,因为它是复合的。要选择第一个,你将有小指数,并且很容易伴随