我知道如何
工作及其功能。
我想知道在Postgres中使用这些连接的情况
答案 0 :(得分:19)
以下是一些经验法则:
如果连接的一侧有很少的行,则首选嵌套循环连接。如果连接条件不使用相等运算符,嵌套循环连接也将用作唯一选项。
work_mem
,则哈希连接是首选。
如果连接条件使用相等运算符并且连接的两边都很大,则首选合并连接,但可以有效地对连接条件进行排序(例如,如果有连接列上的索引。)
一个典型的OLTP查询只从一个表中选择一行,而另一个表中的相关行总是使用嵌套循环连接作为唯一有效的方法。
使用嵌套循环连接连接具有多行(在连接之前无法过滤掉)的表的查询效率非常低,如果连接条件允许,总是 使用散列或合并连接它
优化程序会考虑每种连接策略,并使用承诺最低成本的策略。此决策所依据的最重要因素是来自连接两侧的估计行数。因此,错误的优化器选择通常是由行计数中的错误估计引起的。