一个连接或2个连接和1个联合之间的性能差异

时间:2015-06-06 05:51:20

标签: sql performance postgresql join

我在PostgreSQL中分析了连接运算符的性能,发现了这个:

Merge Full Join  (cost=26144.09..27373.25 rows=176921 width=442) (actual time=127.207..218.997 rows=177706 loops=1)
  Merge Cond: (pet.player_id = p.id)
  ->  Sort  (cost=26028.80..26471.11 rows=176921 width=57) (actual time=126.850..166.591 rows=176941 loops=1)
        Sort Key: pet.player_id
        Sort Method: external merge  Disk: 13040kB

所以在加入之前我们首先进行排序。最好的排序算法有 O n log n )复杂度,所以我预计2个连接和1个联合可以大量工作数据的。事实上,它加入的速度更慢。我进行了几次实验并得到了以下统计数据:

  

一个连接(两个250k行的表):17233sec
  2个连接和1个连接(相同的表):20422sec

实验中使用的连接算法是排序合并连接。 Set enable_mergejoin To true

在这种情况下,为什么2个连接和1个连接速度较慢?

0 个答案:

没有答案