1
1

More than 5 years have passed since last update.

ログテーブル実装するならパーティションプルーニング

Posted at

参考資料

パーティションプルーニングとは

特定の単位で分離し、対象としない単位をスキャンしないことで、効率的なテーブルスキャンを行うことができる。

実例

公式から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;
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1