sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor er UNION-forespørgsler så langsomme i MySQL?

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 .



  1. Hvordan IFNULL() virker i MariaDB

  2. Kan ikke vælge hvor ip=inet_pton($ip)

  3. Oracle Database 20c Nye funktioner

  4. Løsning af PostgreSQL-opgraderingen