Тип разбиения LIST
Разбиение LIST концептуально похоже на разбиение RANGE. В обоих случаях вы определяете выражение разбиения (столбец или немного более сложное вычисление) и используете его для определения, в какие разделы попадет каждая строка. Однако с типом RANGE разбиение выполняется путем назначения диапазона значений каждому разделу. С типом LIST мы назначаем набор значений каждому разделу. Это обычно предпочтительнее, если выражение разбиения может возвращать ограниченный набор значений.
Вариант этого метода разбиения, LIST COLUMNS, позволяет нам использовать несколько столбцов и больше типов данных.
Синтаксис
Последняя часть оператора CREATE TABLE может быть определением разделов новой таблицы. В случае разбиения LIST синтаксис следующий:
PARTITION BY LIST (partitioning_expression)
(
PARTITION partition_name VALUES IN (value_list),
[ PARTITION partition_name VALUES IN (value_list), ... ]
[ PARTITION partition_name DEFAULT ]
)
PARTITION BY LIST указывает, что тип разбиения — LIST.
partitioning_expression — это SQL-выражение, которое возвращает значение из каждой строки. В простейших случаях это имя столбца. Это значение используется для определения, в какой раздел должна попасть строка.
partition_name — это имя раздела.
value_list — это список значений. Если partitioning_expression возвращает одно из этих значений, строка будет храниться в этом разделе. Если мы попытаемся вставить что-то, что не принадлежит ни одному из этих списков значений, строка будет отклонена с ошибкой.
Раздел DEFAULT собирает все записи, которые не подходят ни к одному из других разделов. Разрешается только один раздел DEFAULT. Эта опция была добавлена в MariaDB 10.2.
Примеры использования
Разбиение LIST может быть полезно, когда у нас есть столбец, который может содержать только ограниченный набор значений. Даже в этом случае вместо него можно использовать разбиение RANGE; но разбиение LIST позволяет нам равномерно распределить строки, назначив каждому разделу соответствующий набор значений.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/list-partitioning-type/