2010-02-11 81 views
3

我注意到我们有很多以某一列开始的索引,并且该列具有较低的基数(即公司和99%的记录属于'活'公司)。如何获得特定索引列首先出现的索引列表?

因此,这些索引是无用的(从我读过的),因为它们没有提供将表中的数据快速分离的手段。

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

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

你帮忙赞赏!!

回答

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 
+0

+1我忘了索引列,即Aakash没有:) – Andrew 2010-02-11 13:25:09

+0

干得好,一等奖为你的好先生! 谢谢安德鲁对你的建议! – 2010-02-11 13:45:44