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 行)
似乎以下内容就足够了:
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列上使用非聚集索引。