Partition pruning and selection
MySQL does not scan partitions where there are no matching values; this is automatic and is called partition pruning. The MySQL optimizer evaluates the partitioning expression for the value given, determines which partition contains that value, and scans only that partition.
SELECT
, DELETE
, and UPDATE
statements support partition pruning. INSERT
statements currently cannot be pruned.
You can also explicitly specify partitions and subpartitions for rows matching a given WHERE
condition.
How to do it...
Partition pruning applies only to queries, but explicit selection of partitions is supported for both queries and a number of DML statements.
Partition pruning
Take the example of the employees
table, which is partitioned based on emp_no
:
mysql> CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` enum('M','F') NOT NULL, `hire_date` date NOT NULL...