Inkluderer dine forespørgsler ORDER BY … LIMIT
klausuler?
Hvis du sætter en ORDER BY … LIMIT
efter en UNION
, bliver det anvendt på hele UNION
, og indekser kan ikke bruges i dette tilfælde.
Hvis id
er en primær nøgle, vil denne forespørgsel være øjeblikkelig:
SELECT *
FROM table
ORDER BY id
LIMIT 1
, men denne vil ikke:
SELECT *
FROM table
UNION ALL
SELECT *
FROM table
ORDER BY id
LIMIT 1
Dette ser også ud til at skyldes ORDER BY
. At sortere et mindre sæt er hurtigere end et større.
Har du brug for at det resulterende sæt skal sorteres?
Hvis ikke, skal du bare slippe af med den endelige ORDER BY
.