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

MySQL - SELECT WHERE field IN (underforespørgsel) - Ekstremt langsom hvorfor?

Underforespørgslen køres for hver række, fordi det er en korreleret forespørgsel. Man kan lave en korreleret forespørgsel til en ikke-korreleret forespørgsel ved at vælge alt fra underforespørgslen, som sådan:

SELECT * FROM
(
    SELECT relevant_field
    FROM some_table
    GROUP BY relevant_field
    HAVING COUNT(*) > 1
) AS subquery

Den endelige forespørgsel ville se sådan ud:

SELECT *
FROM some_table
WHERE relevant_field IN
(
    SELECT * FROM
    (
        SELECT relevant_field
        FROM some_table
        GROUP BY relevant_field
        HAVING COUNT(*) > 1
    ) AS subquery
)


  1. Ændres ressource-id hver gang en applikation starter

  2. CTE for at få alle børn (efterkommere) af en forælder

  3. SQL Server - Sådan låser du en tabel, indtil en lagret procedure afsluttes

  4. Hvordan replikeres kun INSERTs ikke SLETTER/OPDATERINGER på Slony Slave Node?