如何检查 table 是否有列存储索引?

How to check if a table has columnstore index?

我需要建立一些机制来检查 table X 是否存储在列中以及是否不转换它。 我知道要将 table X 转换为聚簇列存储索引,我们可以使用以下代码:

CREATE CLUSTERED COLUMNSTORE INDEX MyColumnStoreIndex
ON Table_X

我想进行查询以检查 table 是否包含列存储索引。 提前致谢。

您可以查询 sys.indexes 并检查类型和 type_desc 列。 According to the documentation 值 5 和 6 包含索引是聚集列存储还是非聚集列存储的信息:

select *
from sys.indexes 
where type in (5, 6)

你可以查询sys.indexes如Rigerta的回答中提到的
要同时获取属于找到的索引的表名,您可以执行以下查询

select i.name as indexname, 
       t.name as tablename
from   sys.indexes i
  join sys.tables t on i.object_id = t.object_id
where  i.type in (5, 6)