【问题标题】:How does including a SQL index hint affect query performance?包含 SQL 索引提示如何影响查询性能?
【发布时间】:2010-09-12 03:37:23
【问题描述】:

假设我在 SQL 2005 数据库中有一个表,其中包含 2,000,000 多条记录和一些索引。在我的查询中使用索引提示有什么好处?在查询中使用索引提示有什么缺点吗?

【问题讨论】:

    标签: sql sql-server indexing hint


    【解决方案1】:

    首先,尝试使用 SQL Profiler 在您的数据库中为正常工作负载生成一个活动的 .trc 文件几个小时。然后使用 SQL Server Management Studio Tools 菜单上的“Database Engine Tuning Advisor”查看它是否建议任何可能有益的附加索引、复合索引或覆盖索引。

    我从不使用查询提示,主要使用数百万行数据库。它们有时会对性能产生负面影响。

    【讨论】:

      【解决方案2】:

      我相信这里的每个人都指出的关键点是,经过非常仔细的考虑,索引提示的使用可以提高查询的性能,如果且仅当存在多个可用于检索数据的索引时,并且如果 SQL Server 没有使用正确的。

      根据我的经验,我发现需要索引提示并不是很常见,我相信我今天可能有 2-3 个正在使用的查询已经使用它们...。正确的索引创建和数据库优化应该得到您大部分时间都在执行数据库。

      【讨论】:

        【解决方案3】:

        索引提示只会在您的查询涉及连接表并且用于连接到另一个表的列与多个索引匹配的情况下发挥作用。在这种情况下,数据库引擎可能会选择使用一个索引来进行连接,并且从调查中您可能会知道,如果它使用另一个索引,则查询将执行得更好。在这种情况下,您需要提供索引提示,告诉数据库引擎使用哪个索引。

        【讨论】:

          【解决方案4】:

          我的经验是,有时您比 SQL Server 更了解您的数据集。在这种情况下,您应该使用查询提示。换句话说:您帮助优化器做出决定。

          我曾经构建了一个数据仓库,其中 SQL Server 没有在复杂查询中使用最佳索引。通过在我的查询中给出索引提示,我设法使查询速度提高了大约 100 倍。

          仅在分析查询计划后使用它们。如果您认为使用另一个索引或以不同的顺序使用它们时您的查询可以运行得更快,请给服务器一个提示。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-01-07
            • 2011-04-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-07-03
            • 2013-06-21
            相关资源
            最近更新 更多