-------- One can limit statement execution time max_statement_time: SET STATEMENT max_statement_time=1000 FOR SELECT ... ; One can switch on/off individual optimizations: SET STATEMENT optimizer_switch='materialization=off' FOR SELECT ....; It is possible to enable MRR/BKA for a query: SET STATEMENT join_cache_level=6, optimizer_switch='mrr=on' FOR SELECT ... Note that it makes no sense to try to set a session variable inside a SET STATEMENT: #USELESS STATEMENT SET STATEMENT sort_buffer_size = 100000 for SET SESSION sort_buffer_size = 200000; For the above, after setting sort_buffer_size to 200000 it will be reset to its original state (the state before the SET STATEMENT started) after the statement execution. Limitations ----------- There are a number of variables that cannot be set on per-query basis. These include: * autocommit * character_set_client * character_set_connection * character_set_filesystem * collation_connection * default_master_connection * debug_sync * interactive_timeout * gtid_domain_id * last_insert_id * log_slow_filter * log_slow_rate_limit * log_slow_verbosity * long_query_time * min_examined_row_limit * profiling * profiling_history_size * query_cache_type * rand_seed1 * rand_seed2 * skip_replication * slow_query_log * sql_log_off * tx_isolation * wait_timeout Source ------ * The feature was originally implemented as a Google Summer of Code 2009 project by Joseph Lukas. * Percona Server 5.6 included it as Per-query variable statement * MariaDB ported the patch and fixed many bugs. The task in MariaDB Jira is MDEV-5231. URL: https://mariadb.com/kb/en/set-statement/https://mariadb.com/kb/en/set-statement/