如何获得首先出现特定索引列的索引列表?

时间:2010-02-11 11:50:38

标签: sql-server sql-server-2005 tsql

我注意到我们有很多索引以某个列开头,而且该列的基数较低(即公司和99%的记录都属于'live'公司)。

因此,这些索引几乎没用(从我读过的内容),因为它们没有提供一种分离表中数据的方法,可以快速找到。

所以,我想运行一个脚本来查找数据库中的所有索引,其中索引第一列的索引是一个名为'ROW_COMPANY'的列。例如。

我尝试了各种样本和东西,但是我没有得到正确的结果(即包含太多行,包含不以'ROW_COMPANY'开头的索引的行)。

你帮助欣赏!!

1 个答案:

答案 0 :(得分:4)

试试这个:

SELECT
    o.name TableName
    , c.name ColumnName
    , i.name IndexName
FROM
    sys.index_columns ic
    INNER JOIN sys.indexes i ON ic.object_id = i.object_id 
                            AND ic.index_id = i.index_id
    INNER JOIN sys.columns c ON ic.object_id = c.object_id 
                            AND ic.column_id = c.column_id
    INNER JOIN sys.objects o ON ic.object_id = o.object_id
WHERE
    o.is_ms_shipped = 0
    AND c.name = 'ROW_COMPANY'
    AND ic.index_column_id = 1