Sql-Server

使用沒有聚集索引的雜湊表有什麼性能優勢嗎?

  • March 19, 2012

我有這張桌子:

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 列作為包含索引。

如果您不想創建聚集索引,那麼每個列上的兩個非聚集索引,另一列作為包含列應該可以為您提供相同的基本讀取性能。

引用自:https://dba.stackexchange.com/questions/14987