sql-server - 我们如何在 SQL Server 中查看索引的列
问题描述
我正在尝试查看特定索引的列,但没有成功并感谢任何帮助。
select * from sys.indexes
inner join sys.index_columns on sys.indexes.object_id = sys.index_columns.object_id
inner join sys.columns on sys.index_columns.column_id = sys.columns.column_id
where sys.indexes.name = 'IndexName'
解决方案
总结了答案中的所有评论。
样本数据
create table MyTable
(
Col1 int,
Col2 int,
Col3 int
);
create clustered index MyIdx1 on MyTable (Col1);
create nonclustered index MyIdx2 on MyTable (Col2);
create nonclustered index MyIdx3 on MyTable (Col2) include (Col3);
解决方案
select i.object_id as table_id,
object_name(i.object_id) as table_name,
i.index_id,
i.name as index_name,
i.type_desc as index_type,
c.column_id,
c.name as column_name,
ic.is_included_column as column_included
from sys.indexes i
join sys.index_columns ic
on ic.object_id = i.object_id
and ic.index_id = i.index_id
join sys.columns c
on c.object_id = ic.object_id
and c.column_id = ic.column_id
where i.name like 'MyIdx%';
结果
table_id table_name index_id index_name index_type column_id column_name column_included
----------- ----------- ----------- --------------- --------------- ----------- ----------- ---------------
581577110 MyTable 1 MyIdx1 CLUSTERED 1 Col1 False
581577110 MyTable 2 MyIdx2 NONCLUSTERED 2 Col2 False
581577110 MyTable 3 MyIdx3 NONCLUSTERED 2 Col2 False
581577110 MyTable 3 MyIdx3 NONCLUSTERED 3 Col3 True
推荐阅读
- ios - 让当前用户删除一个 firebase 孩子
- c++ - 实现 std::iter_difference_t
- vue.js - 动态道具对象的计算属性
- forms - 如何更改选择器下划线的颜色?
- python - 在 main.py 中使用时导入模块抛出错误,但在项目之外工作
- java - 如何使用不同元素的属性为 ios 应用程序创建 xpath
- sql - 收集选项组值并将值插入表中
- php - 如何根据php中的URL参数重定向到页面?
- python - 更新列标题时允许重复列熊猫/刷新列dtypes
- c - PostgreSQL/PostGIS - PQexecParams - 错误的元素类型