Здравствуйте!
Имеется таблица:
CREATE TABLE `logs` (
`INSERT_DATE` datetime DEFAULT NULL,
`DATA` text NOT NULL,
KEY `INSERT_DATE` (`INSERT_DATE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
/*!50100 PARTITION BY RANGE (DAYOFMONTH(INSERT_DATE))
(PARTITION p0 VALUES LESS THAN (2) ENGINE = InnoDB,
PARTITION p1 VALUES LESS THAN (3) ENGINE = InnoDB,
...
PARTITION p30 VALUES LESS THAN (32) ENGINE = InnoDB) */
с партициями, сделанными по дням месяца
Запрос
SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME LIKE 'logs';
показывает, что партиции содержат количество записей, соответствующее реальным данным. Т.е. если 20-го числа 17 записей, то и партиция p21 содержит 17 строк. Тут вроде всё хорошо.
Проблема в том, что запрос
EXPLAIN PARTITIONS SELECT * FROM logs WHERE insert_date BETWEEN '2014-10-28' AND '2014-10-29';
показывает в колонке «partitions» все 31 созданных партиций, хотя должен показывать только для соотв. чисел месяца
Вопросы в следующем:
1) Почему Explain так себя ведёт?
2) Возможно ли, что в реальном запросе будут использоваться только нужные партиции?
Заранее спасибо