В то время как я пытался пример, 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 2

1 ответ:

Это происходит потому, что MySQL автоматически не обновляет статистику существующих разделов. Вам нужно еще раз проанализировать оставшиеся разделы, alter table nums_range анализ раздела p1mil; alter table nums_range анализ раздела p2mil; alter table nums_range анализировать раздел p3mil;

После выполнения вышеуказанных команд, повторите запрос, чтобы проверить, вы должны увидеть только 7 записей в таблице