В то время как я пытался пример, MySQL RANGE PARTITION не отображает значения должным образом в указанных разделах. Мои полные данные таковы:
Я создал таблицу с разделом диапазона в виде
CREATE TABLE nums_range (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id)
) PARTITION BY RANGE(id) (
PARTITION p0mil VALUES LESS THAN (1000000),
PARTITION p1mil VALUES LESS THAN (2000000),
PARTITION p2mil VALUES LESS THAN (3000000),
PARTITION p3mil VALUES LESS THAN (4000000),
PARTITION p4mil VALUES LESS THAN (5000000)
);
И я вставил следующие значения
INSERT INTO nums_range (id) VALUES
(900000),(1),(1500050),(1699876),(2700000),(3000000),(3500000),(4000000),(4500000);
Поэтому, когда я набираю следующий запрос
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_NAME = 'nums_range';
Я получаю таблицу, показывающую, как были сделаны разделы...и это хорошо. Для просмотра таблицы Нажмите здесь . На рисунке видно, что в разделе p2mil имеется одна строка данных, а в других-по 2 строки в каждой. Когда я отбрасываю первый раздел, то есть p0mil, то данные принадлежат этому разделу. удаленный. Но проблема в том, что когда я выбираю оставшиеся разделы, разделы p2mil показывают 0 строк, хотя на самом деле у него есть своя строка. Почему??? Нажмите здесь , чтобы увидеть команды с выводом для лучшего понимания моей проблемы.
Пожалуйста, помогите мне, так как я новичок в разделении MySQL. Спасибо:)
1 ответ:
Это происходит потому, что MySQL автоматически не обновляет статистику существующих разделов. Вам нужно еще раз проанализировать оставшиеся разделы, alter table nums_range анализ раздела p1mil; alter table nums_range анализ раздела p2mil; alter table nums_range анализировать раздел p3mil;
После выполнения вышеуказанных команд, повторите запрос, чтобы проверить, вы должны увидеть только 7 записей в таблице