Optimizer hints
---------------

There are some options available in SELECT to affect the execution plan. These
are known as optimizer hints.

HIGH PRIORITY
-------------

HIGH_PRIORITY gives the statement a higher priority. If the table is locked,
high priority SELECTs will be executed as soon as the lock is released, even
if other statements are queued. HIGH_PRIORITY applies only if the storage
engine only supports table-level locking (MyISAM, MEMORY, MERGE). See
HIGH_PRIORITY and LOW_PRIORITY clauses for details.

SQL_CACHE / SQL_NO_CACHE
------------------------

If the query_cache_type system variable is set to 2 or DEMAND, and the current
statement is cacheable, SQL_CACHE causes the query to be cached and
SQL_NO_CACHE causes the query not to be cached. For UNIONs, SQL_CACHE or
SQL_NO_CACHE should be specified for the first query. See also The Query Cache
for more detail and a list of the types of statements that aren't cacheable.

SQL_BUFFER_RESULT
-----------------

SQL_BUFFER_RESULT forces the optimizer to use a temporary table to process the
result. This is useful to free locks as soon as possible.

SQL_SMALL_RESULT / SQL_BIG_RESULT
---------------------------------

SQL_SMALL_RESULT and SQL_BIG_RESULT tell the optimizer whether the result is
very big or not. Usually, GROUP BY and DISTINCT operations are performed using
a temporary table. Only if the result is very big, using a temporary table is
not convenient. The optimizer automatically knows if the result is too big,
but you can force the optimizer to use a temporary table with
SQL_SMALL_RESULT, or avoid the temporary table using SQL_BIG_RESULT.

STRAIGHT_JOIN
-------------

STRAIGHT_JOIN applies to the JOIN queries, and tells the optimizer that the
tables must be read in the order they appear in the SELECT. For const and
system table this options is sometimes ignored.

SQL_CALC_FOUND_ROWS
-------------------

SQL_CALC_FOUND_ROWS is only applied when using the LIMIT clause. If this
option is used, MariaDB will count how many rows would match the query,
without the LIMIT clause. That number can be retrieved in the next query,
using FOUND_ROWS().

USE/FORCE/IGNORE INDEX
----------------------

USE INDEX, FORCE INDEX and IGNORE INDEX constrain the query planning to a
specific index.

For further information about some of these options, see How to force query
plans.

URL: https://mariadb.com/kb/en/optimizer-hints/