7

MySQL 5.5の時点で、varcharのような非整数値でテーブルを分割できるようになったことを理解しています。単一のvarchar列で多くのルックアップを実行するテーブルがあるので、パフォーマンス上の理由からそのテーブルでパーティションを作成したいと思います。

すべての場合において、列の値は単一のアルファベットの単語です(厳密には小文字のaz、検証によって強制されます)。

私がやりたいのは、格納されている各単語の最初の文字でこのテーブルを分割することです。したがって、「a」で始まるすべての単語は最初のパーティションに入れられ、「b」は2番目のパーティションに入れられます。

私の直感では、おそらくLIKEステートメントを使用するようにcreate / alter tableステートメントを作成できますが、構文についてはよくわかりません。

MySQL 5.5を使用してこのようなことをした人はいますか?

4

1 に答える 1

9

最初の文字でそれを行うことに決めた場合は、RANGE パーティショニングがうまくいくと思います。ただし、パーティション分割を最初の文字で行うという絶対的な要件がない場合は、LINEAR KEY パーティション分割の方が適している可能性があります。

これは、varchar 列を使用するようにサイトに配置され、変更されたマニュアル ページから取り上げた例です。

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT NOT NULL,
    store_id INT NOT NULL
)
PARTITION BY RANGE COLUMNS(fname) (
    PARTITION p0 VALUES LESS THAN ('h'),
    PARTITION p1 VALUES LESS THAN ('m'),
    PARTITION p2 VALUES LESS THAN ('t'),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);

そしてそれを実行します:

... Physical database connection acquired for: Feynman
 12:33:07  [CREATE - 0 row(s), 0.062 secs]  Command processed. No rows were affected
... 1 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.062/0.000 sec  [0 successful, 1 warnings, 0 errors]
于 2011-03-23T15:39:59.320 に答える