sql >> Database >  >> RDS >> Mysql

SELECT gebruiken binnen SELECT in mysql-query

In MySQL is het doen van een subquery als deze een "gecorreleerde query". Dit betekent dat de resultaten van de buitenste SELECT afhankelijk van het resultaat van de innerlijke SELECT . Het resultaat is dat je innerlijke query eenmaal per rij wordt uitgevoerd, wat erg traag is.

U moet deze query refactoren; of je twee keer meedoet of twee zoekopdrachten gebruikt, is meestal niet relevant. Twee keer meedoen geeft je:

SELECT something
FROM posts
INNER JOIN tag_map ON tag_map.id = posts.id
INNER JOIN tags ON tags.tag_id = tag_map.tag_id
WHERE tags.tag IN ('tag1', ...)

Zie voor meer informatie de MySQL-handleiding over subquery's converteren naar JOIN's .

Tip:EXPLAIN SELECT zal u laten zien hoe de optimizer van plan is om uw vraag te behandelen. Als u DEPENDENT SUBQUERY . ziet je moet refactoren, deze zijn mega-traag.



  1. PHP-fout krijgen Waarschuwing:fputcsv() verwacht dat parameter 2 array is

  2. Probleem met het testen van database laravel 7.x

  3. Programmatisch opgeslagen SQL Server-procedurebron ophalen die identiek is aan de bron die wordt geretourneerd door de SQL Server Management Studio-gui?

  4. Enkele ideeën over resource pooling op laag niveau in PostgreSQL