Sql server SQL Server 2008 R2筛选索引
有没有办法调查我在创建过滤索引时没有使用的值?我已经看过索引创建脚本,但仍然没有值Sql server SQL Server 2008 R2筛选索引,sql-server,database,indexing,filtered-index,Sql Server,Database,Indexing,Filtered Index,有没有办法调查我在创建过滤索引时没有使用的值?我已经看过索引创建脚本,但仍然没有值 create nonclustered index IX1 where status=0 我在下面的查询中查找状态列和0值根据注释,SQL Management Studio可以编写筛选索引的脚本。只需在索引上单击鼠标右键,然后单击“脚本索引为”。但是,如果要使用SQL查询,可以从sys.indexes表中选择filter definition列: SELECT SCHEMA_NAME(t.schema_id
create nonclustered index IX1 where status=0
我在下面的查询中查找状态列和0值根据注释,SQL Management Studio可以编写筛选索引的脚本。只需在索引上单击鼠标右键,然后单击“脚本索引为”。但是,如果要使用SQL查询,可以从
sys.indexes
表中选择filter definition
列:
SELECT SCHEMA_NAME(t.schema_id) ,
t.name ,
i.name ,
filter_definition
FROM sys.indexes i
INNER JOIN sys.tables t ON t.object_id = i.object_id
WHERE i.type > 0
AND t.is_ms_shipped = 0
AND t.name <> 'sysdiagrams'
AND ( is_primary_key = 0
AND is_unique_constraint = 0
)
AND i.name = 'IX1'
选择模式名称(t.SCHEMA\u id),
t、 名字,
i、 名字,
过滤器定义
从sys.i
t.object\u id=i.object\u id上的内部联接sys.t表
其中i.type>0
t.is_ms_装运=0
和t.name“系统图”
和(主密钥是否为0
并且是唯一的吗?约束=0
)
i.name='IX1'
内置系统目录视图在过滤器定义
列中包含过滤器信息:
select
o.name as [Table],
i.name as [Index],
i.filter_definition as [Filter]
from sys.objects o
inner join sys.indexes i on i.object_id = o.object_id
where i.name = 'IX1'
问题是什么?SQL Server management studio可以为数据库中的每个对象(包括索引)创建创建脚本。你不知道,还是我忽略了更复杂的东西?是的,当然有索引创建脚本,但我在寻找我在创建过滤的indexOk过程中输入的值,那么创建脚本和您输入的值之间的区别是什么?这就像“我不想听录音我说了什么,我想知道我说了什么”。它们是相同的。除非有人同时更改了索引。你的问题毫无意义。你把0。0是值。您输入的值是0。我在创建索引(筛选)时使用了where子句,现在我不记得在创建期间使用了什么。如果我的筛选器定义为null,并且我确定它是一个带值的筛选索引,那么下一步我应该控制什么我使用索引筛选器对此进行了测试,并且过滤器值正确显示在
filter\u definition
列中。我猜要么1)您使用的是具有此筛选器的视图,要么2)数据库中的所有行实际上都是status=0。是的,您是对的,我在本地进行了测试,它为我提供了正确的筛选器定义,我将检查您列出的原因,以及为什么不存在。谢谢您的帮助,但我也知道人们在评论中说了什么,人们应该认真阅读这个问题,侮辱别人是很容易的