列出SQL Server中的所有索引列(包括过滤的列)

格里格里姆

如何获取所有索引列,包括过滤后的列?

if object_id('dbo.tTestIndex') is not null
    drop table dbo.tTestIndex;

create table dbo.tTestIndex (a int, b int, c int);

create index X_tTestIndex on dbo.tTestIndex (a) include (b) where c > 0;

select i.name, i.filter_definition, c.name, ic.is_included_column
from sys.indexes i
inner join sys.index_columns ic on i.object_id = ic.object_id and i.index_id = ic.index_id
left join sys.columns c on ic.object_id = c.object_id and ic.column_id = c.column_id
where i.object_id = object_id('dbo.tTestIndex');

if object_id('dbo.tTestIndex') is not null
    drop table dbo.tTestIndex;

本示例给出了两行而不是三行。

index_name   | filter_definition | column_name | is_included_column
-------------+-------------------+-------------+-------------------
X_tTestIndex | ([c]>(0))         | a           | 0
X_tTestIndex | ([c]>(0))         | b           | 1
加雷斯

您可以使用目录视图sys.sql_expression_dependencies查找过滤器所依赖的列:

SELECT  i.name, i.filter_definition, c.name, is_included_column = 0
FROM    sys.indexes AS i
        INNER JOIN sys.sql_expression_dependencies AS d
            ON d.referencing_id = i.[object_id]
            AND d.referencing_minor_id = i.index_id
            AND d.referencing_class_desc = 'INDEX'
        INNER JOIN sys.columns AS c
            ON c.[object_id] = d.referenced_id
            AND c.column_id = d.referenced_minor_id
WHERE   i.[object_id] = OBJECT_ID(N'dbo.tTestIndex');

然后,您可以将其仅UNION用于原始查询以获取所有列。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

列出所有liquibase sql类型

来自分类Dev

列出elasticsearch索引中的所有字段?

来自分类Dev

列出SQL Server 2012中的架构名称和所有者

来自分类Dev

列出具有实例的可用SQL Server不包括SQL Server Express

来自分类Dev

SQL连接及其在查询中的列出顺序

来自分类Dev

SQL Server:按最近生日列出

来自分类Dev

要列出的CachéSQL列

来自分类Dev

列出PL / SQL中的过程参数

来自分类Dev

如何从SQL Server中的所有表中删除列

来自分类Dev

是否可以从SQL Server列出TFS组中的所有用户

来自分类Dev

如何在具有oracle sql中特定列的架构中列出所有表?

来自分类Dev

SQL列出列A出现多次但列B值不同的所有行

来自分类Dev

SQL Server:列出tableA中的所有值,其中包括tableB中的每个值

来自分类Dev

SQL Server:列出表之间的差异

来自分类Dev

要列出的SQL列

来自分类Dev

SQL列出所有实际拥有者的公寓

来自分类Dev

在1行SQL Server中列出所有产品

来自分类Dev

列出所有包含列的索引(非键)

来自分类Dev

如何列出在oracle sql中具有特定列的架构中的所有表?

来自分类Dev

使用包括子句将列添加到索引中,而无需在SQL Server中删除索引

来自分类Dev

使用max()函数列出sql中的列总数

来自分类Dev

要列出的SQL列

来自分类Dev

如何使用Sql触发器列出表中的所有列

来自分类Dev

SQL列出dashDB模式中的表

来自分类Dev

如何列出所有sql行?

来自分类Dev

SQL:列出行之间的差异(以列显示)

来自分类Dev

列出每个 SQL 表中的所有值

来自分类Dev

如何在 SQL SERVER 的列中列出所有可能的组合?

来自分类Dev

在 SQL 窗口函数中列出或连接

Related 相关文章

热门标签

归档