PostgreSQL中的嵌套连接、合并连接和哈希连接

webghufk  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(1)|浏览(206)

我知道
1.嵌套连接
1.合并联接
1.散列连接
作品及其功能。
我想知道在Postgres中使用这些连接的情况

kx1ctssn

kx1ctssn1#

以下是一些经验法则:

*嵌套循环连接在连接的一侧行数较少的情况下是首选。如果连接条件不使用相等运算符,则嵌套循环连接也是唯一的选项。

  • 如果连接条件使用相等运算符,并且连接的两边都很大,并且哈希适合work_mem乘以hash_mem_multiplier,则首选哈希连接
  • 如果连接条件使用相等运算符并且连接的两边都很大,则合并连接是首选,但可以根据连接条件进行有效排序(例如,如果连接列中使用的表达式上有索引)。

一个典型的OLTP查询只从一个表中选择一行,从另一个表中选择关联的行,它将 * 始终 * 使用嵌套循环连接作为唯一有效的方法。
如果连接表有很多行(在连接之前不能过滤掉),那么使用嵌套循环连接将非常低效,并且如果连接条件允许,将 * 始终 * 使用哈希或合并连接。
优化器会考虑这些连接策略中的每一个,并使用保证成本最低的策略。此决策所基于的最重要因素是估计的连接两端的行计数。因此,错误的优化器选择通常是由错误估计的行计数造成的。

相关问题