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

Brug af SELECT i SELECT i mysql-forespørgsel

I MySQL er det at lave en underforespørgsel som denne en "korreleret forespørgsel". Dette betyder, at resultaterne af den ydre SELECT afhænge af resultatet af den indre SELECT . Resultatet er, at din indre forespørgsel udføres én gang pr. række, hvilket er meget langsomt.

Du bør refaktorisere denne forespørgsel; om du deltager to gange eller bruger to forespørgsler er for det meste irrelevant. At deltage to gange ville give dig:

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', ...)

For mere information, se MySQL-manualen om konvertering af underforespørgsler til JOINs .

Tip:EXPLAIN SELECT vil vise dig, hvordan optimeringsværktøjet planlægger at håndtere din forespørgsel. Hvis du ser DEPENDENT SUBQUERY du bør revactor, disse er mega-langsomme.



  1. Hvorfor cast/konvertere fra int returnerer en stjerne

  2. MySQL &Java - Få id for den sidst indsatte værdi (JDBC)

  3. PostgreSQL installation på Docker

  4. Får fejl ved tilknytning af PostgreSQL LTREE-kolonnen i dvale