Sql-Server
使用沒有聚集索引的雜湊表有什麼性能優勢嗎?
我有這張桌子:
CREATE TABLE [dbo].[relatea] ( [mid] [varchar](16) NOT NULL, [sid] [varchar](16) NOT NULL )
它儲存雜湊匹配。把它作為一個堆有什麼好處嗎?它有大約 700 萬行,並且值在任一列中都不是唯一的。我知道堆通常不適合任何大表。此表目前沒有索引。
我正在考慮將表格更改為:
CREATE TABLE [dbo].[relatea] ( [mid] [varchar](16) NOT NULL, [sid] [varchar](16) NOT NULL, CONSTRAINT [pk_relatea] PRIMARY KEY CLUSTERED ( [mid] ASC, [sid] ASC ) )
表查詢通常但不總是 on
sid
,並且 和 的組合mid
應該sid
始終是唯一的。與將表作為堆相比,創建這樣的聚集索引是否更好?
我會在 sid 列上放置一個聚集索引(不是主鍵)。如果您有時也對中間列進行查找,則將索引添加到中間列,並將 sid 列作為包含索引。
如果您不想創建聚集索引,那麼每個列上的兩個非聚集索引,另一列作為包含列應該可以為您提供相同的基本讀取性能。