参考資料
パーティションプルーニングとは
特定の単位で分離し、対象としない単位をスキャンしないことで、効率的なテーブルスキャンを行うことができる。
実例
公式からt1というテーブルを例にとって考えてみましょう。
以下では、t1のregion_codeというカラムの値を64, 128, 192, それ以上という4つパーティションを作っています
CREATE TABLE t1 (
fname VARCHAR(50) NOT NULL,
lname VARCHAR(50) NOT NULL,
region_code TINYINT UNSIGNED NOT NULL,
dob DATE NOT NULL
)
PARTITION BY RANGE( region_code ) (
PARTITION p0 VALUES LESS THAN (64),
PARTITION p1 VALUES LESS THAN (128),
PARTITION p2 VALUES LESS THAN (192),
PARTITION p3 VALUES LESS THAN MAXVALUE
);
このt1というテーブルに対して以下のようなSELECT文を実行してみましょう。
このSELECT文で対象となるのはregion_codeが126, 127, 128, 129のデータのみである。
先ほどのパーティションに当てはめると、対象のデータがある可能性のあるパーティションはp1とp2のみであることがわかる。
つまり逆に言えば、p0とp3には存在しないことがわかるため、このSELECT文では、p1, p2のみスキャンを行う
SELECT fname, lname, region_code, dob
FROM t1
WHERE region_code > 125 AND region_code < 130;