【问题标题】:Composite Index - SQL Server复合索引 - SQL Server
【发布时间】:2010-12-29 15:10:23
【问题描述】:

sys.dm_db_index_usage_stats DMV 提供有关 sql server 中索引的查找和扫描次数的信息

我有大量包含多列的复合索引。我怀疑这些索引会导致大量的维护开销,并且想缩小列数。

有没有一种方法可以找出针对复合索引中单个列的搜索和扫描。

【问题讨论】:

    标签: sql-server composite-index


    【解决方案1】:

    SQL Server 未实现 SKIP SCAN,因此对复合索引的查找始终包括索引的最左侧(前导)列。

    也就是说,如果您在(col1, col2) 上有一个索引,则索引查找可用于搜索col1col1 col2,但不能用于搜索col2一个人。

    如果您搜索所有这些列,您很可能会从使用索引中受益。

    您提到的“维护开销”是什么?单列索引和多列索引之间有何区别?

    【讨论】:

    • 感谢您的输入.. 它有帮助.. 我有一个包含文件列的复合索引,如 (col1,col2, col3,col4,col5) 等...我们能找出所有五个的次数吗在搜索中使用了列.. 有多少搜索针对 4 个列等。再次感谢您的输入
    • @Dave: 不,您无法从索引使用统计信息中分辨出来。这最好通过查看您的查询执行计划来完成。
    • 感谢 Quassnoi!.. 我需要将一些指标用于服务器中的复合索引使用情况.. 以证明它们需要缩小范围。我猜这是我在应用程序中使用的多个存储过程。
    • 关于跳过扫描的 Microsoft Connect 项:connect.microsoft.com/SQLServer/feedback/details/695044/…
    猜你喜欢
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    相关资源
    最近更新 更多