0
什么索引我有一个简单的表:SQL Server创建
CREATE TABLE DocModHistory
[ID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[DocID] [int] NOT NULL,
[BranchID] [int] NOT NULL,
[UserID] [int] NOT NULL,
[InsDate] [datetime] NOT NULL,
[Type] [int] NOT NULL,
CONSTRAINT [PK_DocModHistory] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
和我有两个选择查询:
SELECT dh.BranchID, MAX(dh.ID) as MaxID FROM DocModHistory dh WHERE dh.UserID = @p_UserID GROUP BY dh.BranchID
和
SELECT dh.DocID, MAX(dh.ID) as MaxID FROM DocModHistory dh WHERE dh.UserID = @p_UserID GROUP BY dh.DocID
你能告诉我请什么我应该创建索引? 我应该为UserID,BranchID,DocID创建单独的索引,还是我需要多列索引?
谢谢!
所以没有必要创建两个索引? SQL Server可以使用您建议的两个查询具有相同性能的索引吗?谢谢! – Zsolt
是的,它可以在两个用户ID都被过滤的情况下使用这两个查询,然后包含的列将被用作查询的一部分,而不是密钥查找。 –