sqlserver查看数据库下所有index
时间: 2024-01-01 15:06:16 浏览: 32
可以使用以下SQL语句来查看SQL Server数据库下所有的索引(index):
```
SELECT
t.name AS table_name,
i.name AS index_name,
i.type_desc,
i.is_unique,
c.name AS column_name,
ic.key_ordinal,
ic.is_descending_key
FROM
sys.tables AS t
INNER JOIN sys.indexes AS i ON t.object_id = i.object_id
INNER JOIN sys.index_columns AS ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
INNER JOIN sys.columns AS c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
WHERE
i.is_primary_key = 0 -- 排除主键
ORDER BY
t.name, i.name, ic.key_ordinal;
```
该语句会返回每个索引的表名、索引名、索引类型、是否唯一、索引包含的列名、列的排序方式等信息。其中,`sys.tables` 存储表的信息,`sys.indexes` 存储索引的信息,`sys.index_columns` 存储索引包含的列的信息,`sys.columns` 存储表中列的信息。在查询中,使用了 `INNER JOIN` 连接这些表,通过关联每个表的 object_id 和 column_id 等字段,可以得到完整的索引信息。
注意,上述查询结果中排除了主键索引,如果需要查看主键索引,可以将 `i.is_primary_key = 0` 修改为 `i.is_primary_key = 1`。