There is a feature called "Partition Pruning" ( entry point: prune_partitions()) where the optimizer figures out the set of partitions it will need to read for a given table when running the query. One can see its result in "partitions" column in EXPLAIN PARTITIONS or in EXPLAIN FORMAT=JSON. Nothing is printed in the optimizer trace about this. EXPLAIN FORMAT=JSON EXPLAIN { "query_block": { "select_id": 1, "nested_loop": [ { "table": { "table_name": "t10", "access_type": "range", EXPLAIN PARTITIONS id select_type table partitions type possible_keys key key_len ref rows Extra 1 SIMPLE t10 NULL range a a 5 NULL 2 Using index condition; Using where trace { "steps": [ { "join_preparation": { "select_id": 1, "steps": [ { "expanded_query": "select t10.a AS a,t10.b AS b,t10.c AS c from t10 where t10.a < 3 and t10.b <> 5 and t10.c < 10" } ] } }, { "join_optimization": { "select_id": 1, "steps": [ { "condition_processing": { "condition": "WHERE", "original_condition": "t10.a < 3 and t10.b <> 5 and t10.c < 10", "steps": [ { "transformation": "equality_propagation", "resulting_condition": "t10.a < 3 and t10.b <> 5 and t10.c < 10" }, { "transformation": "constant_propagation", "resulting_condition": "t10.a < 3 and t10.b <> 5 and t10.c < 10" }, { "transformation": "trivial_condition_removal", "resulting_condition": "t10.a < 3 and t10.b <> 5 and t10.c < 10" } ] } }, { "table_dependencies": [ { "table": "t10", "row_may_be_null": false, "map_bit": 0, "depends_on_map_bits": [] } ] }, { "ref_optimizer_key_uses": [] }, { "rows_estimation": [ { "table": "t10", "range_analysis": { "table_scan": { "rows": 10266, "cost": 2082.2 }, "potential_range_indexes": [ { "index": "a", "usable": true, "key_parts": ["a", "b"] } ], "setup_range_conditions": [], "analyzing_range_alternatives": { "range_scan_alternatives": [ { "index": "a", "ranges": ["(NULL) < (a) < (3)"], "rowid_ordered": false, "using_mrr": false, "index_only": false, "rows": 2, "cost": 2.545390601, "chosen": true } ], "analyzing_roworder_intersect": { "cause": "too few roworder scans" }, "analyzing_index_merge_union": [] }, "group_index_range": { "chosen": false, "cause": "no group by or distinct" }, "chosen_range_access_summary": { "range_access_plan": { "type": "range_scan", "index": "a", "rows": 2, "ranges": ["(NULL) < (a) < (3)"] }, "rows_for_plan": 2, "cost_for_plan": 2.545390601, "chosen": true } } }, { "table": "t10", "rowid_filters": [ { "key": "a", "build_cost": 0.149253545, "rows": 2 } ] }, { "selectivity_for_indexes": [ { "index_name": "a", "selectivity_from_index": 1.948178e-4 } ], "selectivity_for_columns": [], "cond_selectivity": 1.948178e-4 } ] }, { "considered_execution_plans": [ { "plan_prefix": [], "get_costs_for_tables": [ { "best_access_path": { "table": "t10", "considered_access_paths": [ { "access_type": "range", "resulting_rows": 2, "cost": 2.545390601, "chosen": true } ], "chosen_access_method": { "type": "range", "records": 2, "cost": 2.545390601, "uses_join_buffering": false } } } ] }, { "plan_prefix": [], "table": "t10", "rows_for_plan": 2, "cost_for_plan": 2.945390601 } ] }, { "best_join_order": ["t10"] }, { "substitute_best_equal": { "condition": "WHERE", "resulting_condition": "t10.a < 3 and t10.b <> 5 and t10.c < 10" } }, { "attaching_conditions_to_tables": { "attached_conditions_computation": [], "attached_conditions_summary": [ { "table": "t10", "attached": "t10.c < 10", "index": "t10.a < 3 and t10.b <> 5" } ] } } ] } }, { "join_execution": { "select_id": 1, "steps": [] } } ] }