INSERT操作の実行時に結合インデックスを保守するための一般的な方法の例
次はINSERTリクエストの実行時に結合インデックスを保守するための例です。
EXPLAIN出力では、次の項目に注意してください。
ステップ | 実行内容 |
---|---|
9 | 結合インデックスに対する新しい結合結果行を生成する。 |
11 | 結合インデックスの不一致の外部結合行がある場合それらを削除する。 |
12 | 新しい結合結果行を結合インデックスに挿入する。 |
EXPLAIN INSERT ordertbl SELECT * FROM neworders;
EXPLAIN出力の一部を次に示します。
6) We do an all-AMPs RETRIEVE step from df2.neworders by way of an all-rows scan with no residual conditions into Spool 1, which is built locally on the AMPs. Then we do a SORT to order Spool 1 by row hash. The input table will not be cached in memory, but it is eligible for synchronized scanning. The result spool file will not be cached in memory. The size of Spool 1 is estimated to be 2 rows. The estimated time for this step is 0.04 seconds. 7) We do a MERGE into df2.ordertbl from Spool 1. 8) We do an all-AMPs RETRIEVE step from Spool 1 (Last Use) by way of an all-rows scan into Spool 3, which is redistributed by hash code to all AMPs. Then we do a SORT to order Spool 3 by row hash. The result spool file will not be cached in memory. The size of Spool 3 is estimated to be 2 rows. The estimated time for this step is 0.07 seconds. 9) We do an all-AMPs JOIN step from Spool 3 (Last Use) by way of a RowHash match scan, which is joined to df2.lineitem. Spool 3 and df2.lineitem are joined using a merge join, with a join condition of ("df2.lineitem.l_orderkey = Spool_3.o_orderkey"). The input table df2.lineitem will not be cached in memory, but it is eligible for synchronized scanning. The result goes into Spool 2, which is built locally on the AMPs. Then we do a SORT to order Spool 2 by row hash. The result spool file will not be cached in memory. The size of Spool 2 is estimated to be 20 rows. The estimated time for this step is 0.37 seconds. 10) We do an all-AMPs RETRIEVE step from Spool 2 by way of an all-rows scan into Spool 4, which is built locally on the AMPs. Then we do a SORT to order Spool 4 by join index. 11) We do a MERGE DELETE to df2.orderjoinline from Spool 2 (Last Use). 12) We do a MERGE into df2.orderjoinline from Spool 4 (Last Use). 13) We spoil the parser's dictionary cache for the table. 14) We spoil the parser's dictionary cache for the table. 15) Finally, we send out an END TRANSACTION step to all AMPs involved in processing the request. -> No rows are returned to the user as the result of statement 1.