2017-06-28 40 views
0

我必須將數百萬個128位散列值存儲到數據庫中,並且我正在努力處理我的表格設計。存儲128位散列:兩個bigint或二進制(16)?

我應該將散列存儲在兩個BIGINT字段中還是隻使用BINARY(16)?我的典型用例是基於散列查找重複記錄。

我可以只使用(有兩個bigints)

select * from hash where [email protected] and [email protected] 

或(二進制(16)列)

select * from hash where [email protected] 

是否明智重要的性能?

我正在使用MS SQL Server,但我認爲這不重要。但是,我正在從C#程序訪問MS SQL,並且易於讀/寫值是首選,但不是交易斷路器。目前我有一批ulong。

+2

如果一個值有128位,爲什麼要將它分成多列? –

+0

好問題。由於我的程序是用C#編寫的,並且在ulong數組上存儲了128位,因此在SQL中使用相同的內容是很自然的。 – itix

回答

0

您可能會以任何一種方式進行全表掃描,對我來說,使用二進制或varbinary似乎更有意義,並且只有一列上有索引。

相關問題