背景
私は非常に大きなテーブルを持っています。テーブルはこのようなものです
CREATE TABLE tb_doc (
did mediumint(8) unsigned NOT NULL auto_increment,
title varchar(80) NOT NULL default '',
...,
PRIMARY KEY (did),
KEY title (title)
)
TYPE=MyISAM;
タイトルのタイプは varchar(80) です。ほとんどの場合、タイトルは '111111'、'2222222'、'44444444' のような純粋な数値文字列になりますが、'3a'、'a4 のような utf-8 文字列になる場合もあります' または「中国」 (漢字)。
私はすでに HASH (did) を使用してパーティションを実行しましたが、私の SELECT ステートメントは常に次のようになります
SELECT did, title,... FROM tb_doc WHERE title= '1111111';
SELECT did, title,... FROM tb_doc WHERE title= '2222222';
したがって、タイトルを使用してパーティションを実行したいのですが、これがより高速になることを願っています。ここで質問です。
実験
次のステートメントを使用しました。
PARTITION BY RANGE COLUMNS (title)(
PARTITION p00 VALUES LESS THAN (1), # not pure number strings
PARTITION p01 VALUES LESS THAN (500000), # pure number strings from 1 to 500k
PARTITION p02 VALUES LESS THAN (1000000), # pure number strings from 500k to 1000k
PARTITION p03 VALUES LESS THAN (1500000), # pure number strings from 1000k to 1500k
.......... # ......
PARTITION pn VALUES LESS THAN (25000000), # the biggest number now
)
;
類似の質問
質問
- タイトルを使用してパーティションを実行する方が良いですよね?
- 「utf-8」RANGE の例を教えてください。'500000'、'1000000' などと試してみましたが、うまくいきません。
- SELECT xxx from tb_doc WHERE title='12345' を使用すると、MySQL はパーティション 1 からのみデータを取得しますか?
- このテーブルは最大 50 GB ですが、最適なパーティション数はいくつですか?
前もって感謝します。