• それまではテーブルの継承とCHECK制約により実現していた • 使いやすさが格段に向上したほか、性能も向上 例:パーティションテーブルの定義 CREATE TABLE t1(id INT, name TEXT) PARTITION BY RANGE (id); CREATE TABLE t1_1 PARTITION OF t1 FOR VALUES FROM (0) TO (100); CREATE TABLE t1_2 PARTITION OF t1 FOR VALUES FROM (100) TO (200); 親テーブルの定義 子パーティションの 定義 t1 t1_1 0 <= id < 100 t1_2 100 <= id < 200
テーブルt1、t2、t3はパーティショニングされている パーティション・ワイズ結合は無効化して検証 各テーブル(t1、t2、t3)が多数の子パーティションに分割されているときの プランニング時間(≒EXPLAINコマンドの実行時間)はどうなる? SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t1.id = t3.id
https://github.com/postgresql-cfbot/postgresql/tree/cf/3701 https://www.postgresql.org/message-id/flat/CAJ2pMkZNCgoUKSE+_5LthD+Kb [email protected] Join Order Benchmark Leis, Viktor, et al. "How good are query optimizers, really?." Proceedings of the VLDB Endowment 9.3 (2015): 204-215. https://github.com/winkyao/join-order-benchmark