2016-09-23 48 views
0

假设我有10列(不管数据类型)的表,并且我需要在此表中执行插入。但是,作为约束条件,所有行必须是不同的,并且只有在相同列中具有相同值(忽略id列)时,两行才相等。联合指数业绩

例如

等于: (0,1,2,3,4,5,6,7,8,9)和(0,1,2,3,4,5,6, 7,8,9)

不同: (0,1,2,3,4,5,6,7,8,9)和(0,1,2,0,4,5,6, 7,8,9)

我知道这是创建具有所有列的组合索引,但我担心的服务表现,唯一的解决方案(可能是更多的列)。 我的问题是这个指数对表现有多大影响? 当然,我想知道其他解决方案,如果存在。

+1

试试你的方法。如果它太慢,你可以询问一下。 –

+0

http://stackoverflow.com/questions/34029921/using-multi-column-unique-indexes-vs-single-hashed-column –

回答

0

这取决于你的RDBMS等等 - 但没有,在数列的唯一索引不应该有任何显著的性能问题。如果您可以在索引中包含“最左边的”列(即“创建索引”语句中的第一列)是最独特的列,那么这会有所帮助。

正如related question中的链接所暗示的,另一种方法是创建列值的哈希值,并在该哈希列上创建唯一索引。

我会写一个性能测试套件来决定“的多个列的唯一索引”解决方案是否足够快,因为所有的选择都可能是大量的工作,并且可能会比较慢。