2016-09-23 53 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中的鏈接所暗示的,另一種方法是創建列值的哈希值,並在該哈希列上創建唯一索引。

我會寫一個性能測試套件來決定「的多個列的唯一索引」解決方案是否足夠快,因爲所有的選擇都可能是大量的工作,並且可能會比較慢。