我们如何检查该表是否有索引?

时间:2010-04-29 08:59:56

标签: sql sql-server sql-server-2005 sql-server-2008

我们如何检查该表是否有索引?如果有如何找到表的特定列的索引?

此致 库马尔

3 个答案:

答案 0 :(得分:18)

在SQL Server Management Studio中,您可以在树下向下导航到您感兴趣的表,然后打开索引节点。双击该节点中的任何索引将打开属性对话框,该对话框将显示索引中包含哪些列。

如果您想使用T-SQL,这可能会有所帮助:

SELECT
    sys.tables.name,
    sys.indexes.name,
    sys.columns.name
FROM sys.indexes
    INNER JOIN sys.tables ON sys.tables.object_id = sys.indexes.object_id
    INNER JOIN sys.index_columns ON sys.index_columns.index_id = sys.indexes.index_id
        AND sys.index_columns.object_id = sys.tables.object_id
    INNER JOIN sys.columns ON sys.columns.column_id = sys.index_columns.column_id
        AND sys.columns.object_id = sys.tables.object_id
WHERE sys.tables.name = 'TABLE NAME HERE'
ORDER BY
    sys.tables.name,
    sys.indexes.name,
    sys.columns.name

答案 1 :(得分:0)

按列名排序是错误的,你需要按索引中的位置排序,所以order by子句应该是tabname,indname和sys.index_columns.index_column_id ......

答案 2 :(得分:-1)

尝试

select object_name(object_id),* from sys.indexes 
where object_name(object_id) = 'your table name'