我在TSQL中有这样的查询
SELECT TOP 10 [e].[id], [e].[Title]
FROM [Table] AS [e]
WHERE (([e].[Confirmed] = 1) AND ([e].[Deleted] = 0)) AND ([e].
[Status] <> 3)
ORDER BY [e].[CreatedOn] DESC
无论我做了什么索引,我总是得到索引而不是搜索 包括,条件索引,无论我做什么,我总是得到一个索引扫描
我尝试的最后一件事是
CREATE NONCLUSTERED INDEX [UIXF-x] ON [dbo].[Table]
(
[CreatedOn] DESC
)
INCLUDE ( [id],
[Title] )
WHERE ([Confirmed]=(1) AND [Deleted]=(0) AND [Status] !=(3))
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS =
ON) ON [PRIMARY]
GO
我怎样才能获得索引?我尝试了一切。为什么我不能得到索引?
答案 0 :(得分:0)
索引是树,索引扫描是树遍历(选择第一个/最后一个节点) - 正是你想要的。
索引搜索 - 使用给定谓词(搜索条件)在树中搜索。在您的查询中,您没有谓词,这就是为什么找不到索引的原因。
您可以在查询计划的节点属性中查看谓词(当然,如果存在)
WHERE (([e].[Confirmed] = 1) AND ([e].[Deleted] = 0)) AND ([e].
[Status] <> 3)
不是索引的谓词