0
海蘭傢伙,簇索引的小桌子
我繼承了下表和數據庫只有200行:
CREATE TABLE [MyTable](
[Id] [uniqueidentifier] NOT NULL,
[Name] [varchar](255) NULL,
[Value] [varchar](8000) NULL,
[EffectiveStartDate] [datetime] NULL,
[EffectiveEndDate] [datetime] NULL,
[Description] [varchar](2000) NOT NULL DEFAULT (''),
CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
正如你可以看到有一個羣集的PK上唯一標識符列。我在做一些性能檢查,到目前爲止(CPU和IO)最昂貴的查詢如下:
SELECT @Result = Value
FROM MyTable
WHERE @EffectiveDate BETWEEN EffectiveStartDate AND EffectiveEndDate
AND [email protected]
上述查詢被封裝在一個UDF,通常的UDF不叫在選擇列表中或在子句,而是它的返回通常被分配給一個變量。
執行計劃顯示了一個聚集索引掃描
我們的系統是基於在大量實時聚合和數學處理的。每次我們的Web應用程序刷新主頁面時,都會調用一堆存儲過程和UDF,上面的查詢每個用戶每次刷新運行約500次。
我的問題是:我應該將PK更改爲非聚簇,並在這樣一個小表中的Name,EffectiveStartDate,EffectiveEndDate上創建聚簇索引?
謝謝。這確實是我想象的。由於所有操作都是在數據庫內完成的,因此我沒有連接問題 –