【问题标题】:Explicitly mentioning Hash hint to joins明确提到连接的哈希提示
【发布时间】:2011-08-26 00:52:32
【问题描述】:

我如何知道在何处显式使用哈希提示连接?有时查询优化器如何被欺骗并应用有时会影响性能的提示?

【问题讨论】:

  • "要问价格,你买不起"

标签: sql-server join-hints


【解决方案1】:

就我个人而言,我从未使用过加入提示。从来没有。

它们仅对您当时拥有的数据和统计数据有用。我看到它们的用途是试图掩盖糟糕的设计或糟糕的索引或糟糕的查询构造。哈希连接本身并不坏

您能否更新以显示您认为需要连接提示的查询?我们可以提出其他解决方案...

【讨论】:

  • 我注意到,在使用 CDC 统计信息进行项目时,可能会很快变得不同步,这可能是嵌套循环连接和哈希连接之间的区别。在这些情况下,散列连接、合并连接或嵌套循环连接仍然是理想的,但 SQL 服务器不知道,因为统计信息已关闭。有时更新统计信息+查询比散列连接/合并连接/嵌套循环连接没有意义的少数实例要慢,尤其是当它没有进行预读时,因为它认为数据集将非常小因为统计数据略有偏差。
  • 我在使用哈希时看到了巨大的性能提升。当我知道应该快速运行的查询需要永远完成时,我才将它用作最后的手段。我的环境是不同的。我在一个第 3 方数据库中工作,该数据库在其数百个表中的任何一个上都没有外键关系。我倾向于认为 SQL Server 使用这些关系来提出最佳计划。这是一个正确的假设吗?
  • @MikeTeeVee:呃......不确定TBH。我确定我已经阅读了一些内容,但会尝试找到权威来源
猜你喜欢
  • 2018-06-17
  • 1970-01-01
  • 2012-02-19
  • 2012-02-06
  • 2021-03-13
  • 2012-09-16
  • 2019-03-20
  • 2018-06-21
  • 2011-06-05
相关资源
最近更新 更多