1、要查看 SQL Server 数据库中的索引,可以使用如下 SQL 语句:
SELECT TableName = t.name, IndexName = ind.name, ind.type_desc, ind.is_unique, ind.is_primary_key, ColumnNames = stuff( ( select ', ' + col.name + case when ic.is_descending_key = 1 then ' desc' else '' end from sys.index_columns ic inner join sys.columns col on ic.object_id = col.object_id and ic.column_id = col.column_id where ic.object_id = ind.object_id and ic.index_id = ind.index_id order by ic.index_column_id for xml path ('') ),1,2,'' ) FROM sys.indexes ind INNER JOIN sys.tables t ON ind.object_id = t.object_id INNER JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE ind.name IS NOT NULL ORDER BY t.name, ind.name;
这条 SQL 语句查询了系统元数据表,包含了以下信息:
- 表名
- 索引名
- 索引类型(聚集索引或非聚集索引)
- 是否是唯一索引
- 是否是主键索引
- 索引包含的列名
执行上述 SQL 语句,将返回数据库中所有表的所有索引,并列出了每个索引的详细信息,包括列名、类型、是否唯一和主键等信息。可以根据这些信息来进行索引的优化和调整,以提高查询性能。
2、要查看 SQL Server 数据库中指定的多个表上的索引,可以使用如下 SQL 语句:
SELECT TableName = t.name, IndexName = ind.name, ind.type_desc, ind.is_unique, ind.is_primary_key, ColumnNames = stuff( ( SELECT ', ' + col.name + CASE WHEN ic.is_descending_key = 1 THEN ' desc' ELSE '' END FROM sys.index_columns ic INNER JOIN sys.columns col ON ic.object_id = col.object_id AND ic.column_id = col.column_id WHERE ic.object_id = ind.object_id AND ic.index_id = ind.index_id ORDER BY ic.index_column_id FOR XML PATH ('') ),1,2,'' ) FROM sys.indexes ind INNER JOIN sys.tables t ON ind.object_id = t.object_id INNER JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Table1', 'Table2', 'Table3') -- 替换成你要查询的多个表名,用逗号分隔 ORDER BY t.name, ind.name;
将上述 SQL 语句中的 `IN ('Table1', 'Table2', 'Table3')` 替换为你要查询的多个表名,并根据需要修改其他查询条件。执行该 SQL 语句将返回指定表上的所有索引,并列出每个索引的详细信息,包括索引名、类型、是否唯一和主键等信息。
注意:确保将表名作为字符串按正确的语法提供给 `IN` 表达式,并在 SQL 查询中使用正确的数据库上下文。
到此这篇关于SQL server查看各表的索引的文章就介绍到这了,更多相关SQL server索引内容请搜索插件窝以前的文章或继续浏览下面的相关文章希望大家以后多多支持插件窝!