Sql-Server
此場景的最佳索引
我們的數據庫中有一張表
tblCustomText( ParentID int NOT NULL, CustomFieldID int NOT NULL, Value char(50) NOT NULL, Log_CreateDate datetime NOT NULL )
(ParentID+CustomFieldID) 是唯一的。
讀取操作類似於:SELECT Value WHERE ParenID=@p1 AND CustomFieldID = @p2(有時使用 JOIN 代替 WHERE)
寫操作:85% 是 INSERT,13% 是 UPDATE,2% DELETE。(通過 ParentID+CustomFieldID)
現在,我想知道應該為這個表定義哪些索引?(它包含〜6M行)
似乎以下內容就足夠了:
CREATE TABLE dbo.tblCustomText ( ParentID int NOT NULL, CustomFieldID int NOT NULL, Value char(50) NOT NULL, Log_CreateDate datetime NOT NULL, PRIMARY KEY CLUSTERED (ParentID, CustomFieldID) );
稍後您可能還會發現您正在按日期查詢,因此您可能希望在
Log_CreatedDate
列上使用非聚集索引。
由於 ParentID + CustomFieldID 是唯一的並且不是 NULL,我建議您在這兩個欄位的組合上創建一個集群主鍵。