Partition pruning and selection
You are viewing an old version of this article. View
the current version here.
When a WHERE clause is related to the partitioning expression, the optimizer knows which partitions are relevant for the query. Other partitions will not be read. This optimization is called partition pruning).
EXPLAIN PARTITIONS can be used to know which partitions will be read for a given query. For example:
EXPLAIN PARTITIONS SELECT * FROM orders WHERE id < 15000000; +------+-------------+--------+------------+-------+---------------+---------+---------+------+------+-------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+--------+------------+-------+---------------+---------+---------+------+------+-------------+ | 1 | SIMPLE | orders | p0,p1 | range | PRIMARY | PRIMARY | 4 | NULL | 2 | Using where | +------+-------------+--------+------------+-------+---------------+---------+---------+------+------+-------------+
Sometimes the WHERE clause does not contain the necessary information to use partition pruning, or the optimizer cannot infer this information. However, we may know which partitions are relevant for the query. We can force MariaDB to only access the specified partitions by adding a PARTITION clause:
SELECT * FROM orders PARTITION (p3) WHERE user_id = 50;
The PARTITION clause is supported for all DML statements:
Comments
Comments loading...
Content reproduced on this site is the property of its respective owners,
and this content is not reviewed in advance by MariaDB. The views, information and opinions
expressed by this content do not necessarily represent those of MariaDB or any other party.