In many situations, a composite index performs better than an index with a single column. To build an optimal composite index, populate it with columns in this order.
=
column(s) from the WHERE
clause first. (eg, INDEX(a,b,...)
for WHERE a=12 AND b='xyz' ...
)IN
column(s); the optimizer may be able to leapfrog through the index.x BETWEEN 3 AND 9
, name LIKE 'J%'
) It won't use anything past the first range column.GROUP BY
, in orderORDER BY
, in order. Works only if all are ASC
or all are DESC
or you are using 8.0.Notes and exceptions:
WHERE
, there is no need to go on to GROUP BY
, etc.ORDER BY
column(s), ignoring WHERE
.DATE(x) = ...
cannot use x
in the index.)text_col(99)
) is unlikely to be helpful; may hurt.