sql-server - 我怎样才能得到一个特定索引列首先出现的索引列表?

标签 sql-server sql-server-2005 tsql

我注意到我们有很多以特定列开头的索引,并且该列的基数较低(即公司和 99% 的记录属于“实时”公司)。

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

因此,我想运行一个脚本来找到数据库中的所有索引,其中第一列的索引是一个名为“ROW_COMPANY”的列。

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

感谢您的帮助!!

最佳答案

试试这个:

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

关于sql-server - 我怎样才能得到一个特定索引列首先出现的索引列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2244173/

相关文章:

sql-server-2005 - SQL Server 2005 值的差异

sql-server - 在数据库服务器上查询消耗 CPU

sql - 选择 2 列中具有重复值的行

sql-server-2005 - 为一个 SQL 参数传递多个值

sql - 将一列的多行转换为多列(即时)

sql - 使用两个不同的子句计算两列的行数

mysql - 每个客户订购的产品总数

c# - 使用 ADO.NET 重命名列名称和更改表中列的数据类型

sql - 如何在向其中插入值时自动递增表变量的列

sql - 避免在SQL查询中出现重复的行