本帖最后由 Extremeways 于 2013-3-27 23:06 编辑 nested loop: 1.一个大表和一个小表(驱动表)连接,连接方式可以是等值或者是不等值 2.驱动表数据较小或者内部表已连接的列有唯一性索引或者高度可选的非唯一性索引,效率很高 3.能快速读取结果集中第一批记录而不必等待整个结果集完全确定下来 hash join: 1.一般两张相同大小的表连接,初始参数hash_join_enable=true 2.只能是等价连接,只能是CBO模式 3.只有一张源表需要排序,可能比merge join更快,因为只需要对一张源表排序; 也可能比nested loop更快,因为处理内存中的hash表比处理b-tree索引更快 4.可能会使用到临时表空间,所以最好pag_aggregate_target设置的比较大 merge join: 1.首先对2张表的连接列进行排序后再连接 2.当缺乏数据选择性或者有效索引时,或者2个表都比较庞大,可能比nested loop更有效 3.只能是等值连接,可能使用temp表空间 |
三种连接方式的特点
最新推荐文章于 2020-03-05 14:16:50 发布