sql >> Databáze >  >> RDS >> Mysql

MySQL - SELECT WHERE pole IN (poddotaz) - Extrémně pomalé proč?

Poddotaz se spouští pro každý řádek, protože se jedná o korelovaný dotaz. Z korelovaného dotazu lze udělat nekorelovaný dotaz výběrem všeho z poddotazu, například takto:

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

Poslední dotaz bude vypadat takto:

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. Top 30 otázek v pohovoru SQL Query, které musíte procvičit v roce 2022

  2. Jak se připojím k serveru SQL pomocí sqlalchemy pomocí ověřování systému Windows?

  3. SQL SELECT pro získání prvních N kladných celých čísel

  4. Oracle:existuje nějaký logický důvod, proč nepoužívat paralelní spouštění s poddotazy v seznamu SELECT?