我正在尝试在sql server 2008 R2上使用过滤索引。
我能够成功创建索引,但在执行查询时,即使在使用主键删除所有索引之后,也不会使用创建的索引。
我还尝试清除计划缓存,但执行计划没有变化。
CREATE NONCLUSTERED INDEX [IX_MyTable_test] ON [MyTable]
(
COL01 ASC
)
WHERE ([FK_ID]=(34))
DBCC FREEPROCCACHE
DECLARE @SQL NVARCHAR(MAX), @ProductID INT
SET @ProductID = 34
SET @SQL = N'select top 1 COL01 from [MyTable]
where [FK_ID] =' + CAST(@ProductID AS VARCHAR(10))
EXECUTE sp_executesql @SQL
select top 1 COL01 from [MyTable]
where [FK_ID] = cast( 34 as varchar(10))
我检查了类似的问题,但找不到任何解决方法。当尝试使用adventureworks 2012数据库的类似脚本时,在那里使用了创建的索引。
那么,是否需要在数据库级别进行任何设置或如何使用过滤后的索引?