此场景的最佳索引

jar*_*ics 2 index sql-server-2008 database-design sql-server

我们的数据库中有一张表

tblCustomText(
  ParentID int NOT NULL,
  CustomFieldID int NOT NULL,
  Value char(50) NOT NULL, 
  Log_CreateDate datetime NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

(ParentID+CustomFieldID) 是唯一的。

读取操作是这样的: SELECT Value WHERE ParenID=@p1 AND CustomFieldID = @p2(有时使用 JOIN 代替 WHERE)

写操作:85% 是 INSERT,13% 是 UPDATE,2% 是 DELETE。(通过 ParentID+CustomFieldID)

现在,我想知道应该为这个表定义哪些索引?(它包含 ~6M 行)

Aar*_*and 7

似乎以下内容就足够了:

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)
);
Run Code Online (Sandbox Code Playgroud)

稍后您可能还会发现您正在按日期查询,因此您可能需要在Log_CreatedDate列上使用非聚集索引。