我知道
作品及其功能。
我想知道这些连接在Postgres中使用的情况
以下是一些经验法则:
嵌套循环连接。如果联接条件不使用相等运算符,则嵌套循环联接也将用作唯一选项。
[Hash Joins如果连接条件使用相等运算符并且连接的两面都很大并且哈希适合work_mem
。
Merge Joins,但可以有效地对连接条件进行排序(例如,如果表达式上有索引在连接列中使用)。
典型的OLTP查询只从一个表中选择一行,而从另一表中选择相关联的行,总是使用嵌套循环联接作为唯一有效的方法。
使用多行行(不能在连接之前过滤掉的表)连接表的查询在嵌套循环连接中效率很低,并且如果连接条件允许,将总是使用哈希或合并连接。
优化器考虑了所有这些连接策略,并使用了承诺最低成本的策略。该决定所基于的最重要因素是联接两侧的估计行数。因此,错误的优化器选择通常是由行计数估计错误引起的。