All pages
Powered by GitBook
1 of 1

Loading...

optimizer_switch

optimizer_switch is a server variable that one can use to enable/disable specific optimizations.

Syntax

To set or unset the various optimizations, use the following syntax:

The cmd takes the following format:

Syntax
Description

There is no need to list all flags - only those that are specified in the command will be affected.

Available Flags

Below is a list of all optimizer_switch flags available in MariaDB:

Flag and MariaDB default
Supported in MariaDB since

Defaults

From version
Default optimizer_switch setting

See Also

This page is licensed: CC BY-SA / Gnu FDL

SET [GLOBAL|SESSION] optimizer_switch='cmd[,cmd]...';

default

duplicateweedout=on

engine_condition_pushdown=off

(deprecated in , removed in )

()

index_merge=on

index_merge_intersection=on

index_merge_sort_union=on

index_merge_union=on#

materialization=on (, )

default

Reset all optimizations to their default values.

optimization_name=default

Set the specified optimization to its default value.

optimization_name=on

Enable the specified optimization.

optimization_name=off

Disable the specified optimization.

condition_pushdown_for_derived=on

condition_pushdown_for_subquery=on

condition_pushdown_from_having=on

cset_narrowing=on/off

MariaDB 10.6.16, MariaDB 10.11.6, , and

derived_merge=on

derived_with_keys=on

MariaDB 12.0.1

index_merge=on, index_merge_union=on, index_merge_sort_union=on, index_merge_intersection=on, index_merge_sort_intersection=off, index_condition_pushdown=on, derived_merge=on, derived_with_keys=on, firstmatch=on, loosescan=on, duplicateweedout=on, materialization=on, in_to_exists=on, semijoin=on, partial_match_rowid_merge=on, partial_match_table_scan=on, subquery_cache=on, mrr=off, mrr_cost_based=off, mrr_sort_keys=off, outer_join_with_cache=on, semijoin_with_cache=on, join_cache_incremental=on, join_cache_hashed=on, join_cache_bka=on, optimize_join_buffer_size=on, table_elimination=on, extended_keys=on, exists_to_in=on, orderby_uses_equalities=on, condition_pushdown_for_derived=on, split_materialized=on, condition_pushdown_for_subquery=on, rowid_filter=on, condition_pushdown_from_having=on, not_null_range_scan=off, hash_join_cardinality=on, cset_narrowing=on, sargable_casefold=on

index_merge=on, index_merge_union=on, index_merge_sort_union=on, index_merge_intersection=on, index_merge_sort_intersection=off, index_condition_pushdown=on, derived_merge=on, derived_with_keys=on, firstmatch=on, loosescan=on, materialization=on, in_to_exists=on, semijoin=on, partial_match_rowid_merge=on, partial_match_table_scan=on, subquery_cache=on, mrr=off, mrr_cost_based=off, mrr_sort_keys=off, outer_join_with_cache=on, semijoin_with_cache=on, join_cache_incremental=on, join_cache_hashed=on, join_cache_bka=on, optimize_join_buffer_size=on, table_elimination=on, extended_keys=on, exists_to_in=on, orderby_uses_equalities=on, condition_pushdown_for_derived=on, split_materialized=on, condition_pushdown_for_subquery=on, rowid_filter=on, condition_pushdown_from_having=on, not_null_range_scan=off, hash_join_cardinality=on, cset_narrowing=on, sargable_casefold=on

index_merge=on, index_merge_union=on, index_merge_sort_union=on, index_merge_intersection=on, index_merge_sort_intersection=off, index_condition_pushdown=on, derived_merge=on, derived_with_keys=on, firstmatch=on, loosescan=on, materialization=on, in_to_exists=on, semijoin=on, partial_match_rowid_merge=on, partial_match_table_scan=on, subquery_cache=on, mrr=off, mrr_cost_based=off, mrr_sort_keys=off, outer_join_with_cache=on, semijoin_with_cache=on, join_cache_incremental=on, join_cache_hashed=on, join_cache_bka=on, optimize_join_buffer_size=on, table_elimination=on, extended_keys=on, exists_to_in=on, orderby_uses_equalities=on, condition_pushdown_for_derived=on, split_materialized=on, condition_pushdown_for_subquery=on, rowid_filter=on, condition_pushdown_from_having=on, not_null_range_scan=off, hash_join_cardinality=on, cset_narrowing=off, sargable_casefold=on

MariaDB 10.6.16, MariaDB 10.11.6, , and

index_merge=on, index_merge_union=on, index_merge_sort_union=on, index_merge_intersection=on, index_merge_sort_intersection=off, index_condition_pushdown=on, derived_merge=on, derived_with_keys=on, firstmatch=on, loosescan=on, materialization=on, in_to_exists=on, semijoin=on, partial_match_rowid_merge=on, partial_match_table_scan=on, subquery_cache=on, mrr=off, mrr_cost_based=off, mrr_sort_keys=off, outer_join_with_cache=on, semijoin_with_cache=on, join_cache_incremental=on, join_cache_hashed=on, join_cache_bka=on, optimize_join_buffer_size=on, table_elimination=on, extended_keys=on, exists_to_in=on, orderby_uses_equalities=on, condition_pushdown_for_derived=on, split_materialized=on, condition_pushdown_for_subquery=on, rowid_filter=on, condition_pushdown_from_having=on, not_null_range_scan=off, hash_join_cardinality=on, cset_narrowing=off

index_merge=on, index_merge_union=on, index_merge_sort_union=on, index_merge_intersection=on, index_merge_sort_intersection=off, engine_condition_pushdown=off, index_condition_pushdown=on, derived_merge=on, derived_with_keys=on, firstmatch=on, loosescan=on, materialization=on, in_to_exists=on, semijoin=on, partial_match_rowid_merge=on, partial_match_table_scan=on, subquery_cache=on, mrr=off, mrr_cost_based=off, mrr_sort_keys=off, outer_join_with_cache=on, semijoin_with_cache=on, join_cache_incremental=on, join_cache_hashed=on, join_cache_bka=on, optimize_join_buffer_size=on, table_elimination=on, extended_keys=on, exists_to_in=on, orderby_uses_equalities=on, condition_pushdown_for_derived=on, split_materialized=on, condition_pushdown_for_subquery=on, rowid_filter=on,condition_pushdown_from_having=on, not_null_range_scan=off, hash_join_cardinality=on

MariaDB 10.6.13, MariaDB 10.11.3

index_merge=on, index_merge_union=on, index_merge_sort_union=on, index_merge_intersection=on, index_merge_sort_intersection=off, engine_condition_pushdown=off, index_condition_pushdown=on, derived_merge=on, derived_with_keys=on, firstmatch=on, loosescan=on, materialization=on, in_to_exists=on, semijoin=on, partial_match_rowid_merge=on, partial_match_table_scan=on, subquery_cache=on, mrr=off, mrr_cost_based=off, mrr_sort_keys=off, outer_join_with_cache=on, semijoin_with_cache=on, join_cache_incremental=on, join_cache_hashed=on, join_cache_bka=on, optimize_join_buffer_size=on, table_elimination=on, extended_keys=on, exists_to_in=on, orderby_uses_equalities=on, condition_pushdown_for_derived=on, split_materialized=on, condition_pushdown_for_subquery=on, rowid_filter=on,condition_pushdown_from_having=on, not_null_range_scan=off, hash_join_cardinality=off

Quickly finding optimizer_switch values that are on or off
The optimizer converts certain big IN predicates into IN subqueries
optimizer_adjust_secondary_key_cost
Optimizer hints in SELECT

MariaDB 12.0
exists_to_in=on
firstmatch=on
index_condition_pushdown=on
hash_join_cardinality=off
MariaDB 10.6.13
MDEV-30812
index_merge_sort_intersection=off
in_to_exists=on
loosescan=on
semi-join
non-semi-join
mrr=off
mrr_cost_based=off
mrr_sort_keys=off
not_null_range_scan=off
orderby_uses_equalities=on
partial_match_rowid_merge=on
partial_match_table_scan=on
rowid_filter=on
sargable_casefold=on
semijoin=on
split_materialized=on
subquery_cache=on
table_elimination=on
MariaDB 10.2.2
MariaDB 10.4
MariaDB 10.4.3
MariaDB 11.0.4
MariaDB 11.1.3
MariaDB 11.2.2
MariaDB 5.3
MariaDB 11.7.0
MariaDB 11.3.1
MariaDB 11.0.4
MariaDB 11.1.3
MariaDB 11.2.2
MariaDB 11.0.2
MariaDB 5.3
MariaDB 5.1
MariaDB 5.5
MariaDB 10.1
MariaDB 11.3
MariaDB 10.0
MariaDB 5.5.21
MariaDB 5.3
MariaDB 5.3
MariaDB 5.1
MariaDB 5.1
MariaDB 5.3
MariaDB 5.1
MariaDB 5.1
MariaDB 5.3
MariaDB 5.3
MariaDB 5.3
MariaDB 5.3
MariaDB 5.3
MariaDB 5.3
MariaDB 5.3
MariaDB 5.3
MariaDB 5.3
MariaDB 10.5
MariaDB 5.3
MariaDB 10.1.15
MariaDB 5.3
MariaDB 5.3
MariaDB 5.3
MariaDB 10.4.3
MariaDB 11.3.0
MariaDB 5.3
MariaDB 5.3
MariaDB 10.3.4
MariaDB 5.3
MariaDB 5.1
extended_keys=on
join_cache_bka=on
join_cache_hashed=on
join_cache_incremental=on
optimize_join_buffer_size=on
outer_join_with_cache=on
semijoin_with_cache=on