Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2008 R2筛选索引_Sql Server_Database_Indexing_Filtered Index - Fatal编程技术网

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。是的,您是对的,我在本地进行了测试,它为我提供了正确的筛选器定义,我将检查您列出的原因,以及为什么不存在。谢谢您的帮助,但我也知道人们在评论中说了什么,人们应该认真阅读这个问题,侮辱别人是很容易的