假设我有一个包含10列的表(无论数据类型),我需要在此表中执行插入操作。但是,作为约束,所有行必须是不同的,并且只有在相同列中具有相同值的情况下,2行才相等(忽略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)
我知道的唯一解决方案是创建一个包含所有列的组合索引,但我担心性能(可能是更多列)。 我的问题是这个指数对性能有多大影响? 当然,如果存在,我想知道其他解决方案。
答案 0 :(得分:0)
这取决于您的RDBMS等 - 但不是,多列的唯一索引不应该有任何重大的性能问题。如果您的索引中的“最左侧”列(即“创建索引”语句中的第一列)是最独特的列,则会有所帮助。
正如此related question中的链接所示,另一种方法是创建列值的哈希值,并在该哈希列上创建唯一索引。
我会编写一个性能测试套件来判断“多列中的唯一索引”解决方案是否足够快,因为所有替代方案都可能需要做很多工作,而且可能会更慢。