如何强制SQL走性能更优的hash join?

💡 原文中文,约3300字,阅读约需8分钟。
📝

内容提要

本文介绍了SQL优化中使用hash join的优势和方法,以及无法使用hash join的原因和不支持的数据类型。建议在join时保持数据类型一致或兼容。

🎯

关键要点

  • hash join通常优于nestloop join,复杂度分别为O(N)和O(N方)。

  • 可以通过关闭nestloop或使用hashjoin提示强制使用hash join。

  • 不同数据类型的hash函数计算方式不同,互不兼容的数据类型无法进行hash比较。

  • nest loop的复杂度远高于hash join,导致性能差距显著。

  • 即使数据类型看似相近,因精度、格式和时区等差异,仍可能无法进行hash join。

  • 某些数据类型间的join不支持hash,例如timestamp与date之间的join。

  • 建议在join时保持数据类型一致或兼容,以提高性能。

  • 在不同兼容模式下,current_date的类型可能不同,影响hash join的使用。

🏷️

标签

➡️

继续阅读