3

以下は、 explain.depesz.comの計画例です。

Limit  (cost=65301.950..65301.950 rows=1 width=219) (actual time=886.074..886.074 rows=0 loops=1)
  ->  Sort  (cost=65258.840..65301.950 rows=17243 width=219) (actual time=879.683..885.211 rows=17589 loops=1)
          Sort Key: juliet.romeo
          Sort Method: external merge  Disk: 4664kB
        ->  Hash Join  (cost=30177.210..62214.980 rows=17243 width=219) (actual time=278.986..852.834 rows=17589 loops=1)
                Hash Cond: (whiskey_quebec.whiskey_five = juliet.quebec)
              ->  Bitmap Heap Scan on whiskey_quebec  (cost=326.060..21967.630 rows=17243 width=4) (actual time=7.494..65.956 rows=17589 loops=1)
                      Recheck Cond: (golf = 297)
                    ->  Bitmap Index Scan on kilo  (cost=0.000..321.750 rows=17243 width=0) (actual time=4.638..4.638 rows=17589 loops=1)
                            Index Cond: (golf = 297)
              ->  Hash  (cost=15750.510..15750.510 rows=329651 width=219) (actual time=267.388..267.388 rows=329651 loops=1)
                      Buckets: 1024  Batches: 128  Memory Usage: 679kB
                    ->  Seq Scan on juliet  (cost=0.000..15750.510 rows=329651 width=219) (actual time=0.003..65.704 rows=329651 loops=1)

これらの操作はどのような順序で実行されますか? 一気飲み?トップダウン?

4

2 に答える 2

9

どちらの方向にも意味があります。上から下にデータの要求が続きます。下から上にデータが続きます。ツリーが表示されます。すべてのノードには、最小限の子が 1 つあります。実行時に、ノードは自分の子を呼び出します-「データを送信してください」そして、この呼び出しは再帰的にリーフに繰り返されます-seqスキャン、インデックススキャン、返された関数呼び出しの設定...データを生成し、行ごとに-データは親に送信されます.

于 2014-02-15T04:38:39.457 に答える