Таблица разделов MySQL 5.5 от AZ - PullRequest
6 голосов
/ 23 марта 2011

Я понимаю, что с MySQL 5.5 теперь вы можете разбивать таблицу на нецелые значения, такие как varchar.У меня есть таблица, в которой я выполняю множество поисков по одному столбцу varchar, поэтому я хотел бы разбить его на части по соображениям производительности.

Во всех случаях значение столбца представляет собой одно алфавитное слово (строго строчные буквы z, принудительно проверяются).

Я хотел бы разбить эту таблицу по первой букве в каждом сохраненном слове, поэтому все слова, начинающиеся с 'a', идут в первом разделе, 'b 'во втором и т. д.

Мне кажется, что я могу сконструировать инструкцию create / alter table для использования оператора LIKE, но не уверен насчет синтаксиса.

Кто-нибудь сделалчто-нибудь подобное с использованием MySQL 5.5?

1 Ответ

7 голосов
/ 23 марта 2011

Если вы решили сделать это по первой букве, я думаю, что ДИАПАЗОН РАЗДЕЛЕНИЯ поможет.Однако, если у вас нет абсолютного требования к разделению по первой букве, 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]
...