sql >> Database >  >> RDS >> Mysql

Waarom zijn UNION-query's zo traag in MySQL?

Bevatten uw vragen ORDER BY … LIMIT clausules?

Als u een ORDER BY … LIMIT na een UNION , wordt het toegepast op de hele UNION , en indexen kunnen in dit geval niet worden gebruikt.

Als id een primaire sleutel is, zal deze vraag onmiddellijk zijn:

SELECT  *
FROM    table
ORDER BY id
LIMIT 1

, maar deze niet:

SELECT  *
FROM    table
UNION ALL
SELECT  *
FROM    table
ORDER BY id
LIMIT 1

Dit lijkt ook te wijten te zijn aan ORDER BY . Het sorteren van een kleinere set is sneller dan een grotere.

Moet de resulterende set worden gesorteerd?

Zo niet, verwijder dan gewoon de laatste ORDER BY .



  1. hoe dynamische json in treeview wpf te binden

  2. Berekende / berekende / virtuele / afgeleide kolommen in PostgreSQL

  3. Waarom Select Top 100 Percent gebruiken?

  4. MySQL's INSERT IGNORE INTO &buitenlandse sleutels