我知道1.嵌套连接1.合并联接1.散列连接作品及其功能。我想知道在Postgres中使用这些连接的情况
kx1ctssn1#
以下是一些经验法则:
*嵌套循环连接在连接的一侧行数较少的情况下是首选。如果连接条件不使用相等运算符,则嵌套循环连接也是唯一的选项。
work_mem
hash_mem_multiplier
一个典型的OLTP查询只从一个表中选择一行,从另一个表中选择关联的行,它将 * 始终 * 使用嵌套循环连接作为唯一有效的方法。如果连接表有很多行(在连接之前不能过滤掉),那么使用嵌套循环连接将非常低效,并且如果连接条件允许,将 * 始终 * 使用哈希或合并连接。优化器会考虑这些连接策略中的每一个,并使用保证成本最低的策略。此决策所基于的最重要因素是估计的连接两端的行计数。因此,错误的优化器选择通常是由错误估计的行计数造成的。
1条答案
按热度按时间kx1ctssn1#
以下是一些经验法则:
*嵌套循环连接在连接的一侧行数较少的情况下是首选。如果连接条件不使用相等运算符,则嵌套循环连接也是唯一的选项。
work_mem
乘以hash_mem_multiplier
,则首选哈希连接。一个典型的OLTP查询只从一个表中选择一行,从另一个表中选择关联的行,它将 * 始终 * 使用嵌套循环连接作为唯一有效的方法。
如果连接表有很多行(在连接之前不能过滤掉),那么使用嵌套循环连接将非常低效,并且如果连接条件允许,将 * 始终 * 使用哈希或合并连接。
优化器会考虑这些连接策略中的每一个,并使用保证成本最低的策略。此决策所基于的最重要因素是估计的连接两端的行计数。因此,错误的优化器选择通常是由错误估计的行计数造成的。