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

ale*_*mia 3 t-sql sql-server columnstore

我需要制作一些机制来检查表X是否是列存储的,以及是否不进行转换.我知道要将表X转换为集群列存储索引,我们可以使用以下代码:

CREATE CLUSTERED COLUMNSTORE INDEX MyColumnStoreIndex
ON Table_X
Run Code Online (Sandbox Code Playgroud)

我想创建一个查询,检查表是否包含列存储索引.提前致谢.

Rig*_*iri 6

您可以查询sys.indexes并检查type和type_desc列.根据文档值5和6保存索引是聚簇还是非聚簇列存储的信息:

select *
from sys.indexes 
where type in (5, 6)
Run Code Online (Sandbox Code Playgroud)


Gui*_*doG 5

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

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)
Run Code Online (Sandbox Code Playgroud)