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

Použití SELECT v rámci SELECT v dotazu mysql

V MySQL je provedení podobného poddotazu „korelovaným dotazem“. To znamená, že výsledky vnějšího SELECT závisí na výsledku vnitřního SELECT . Výsledkem je, že váš vnitřní dotaz se provede jednou na řádek, což je velmi pomalé.

Tento dotaz byste měli refaktorovat; zda se připojíte dvakrát nebo použijete dva dotazy, je většinou irelevantní. Pokud se připojíte dvakrát, získáte:

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

Další informace naleznete v příručce MySQL o převodu poddotazů na JOIN .

Tip:EXPLAIN SELECT vám ukáže, jak optimalizátor plánuje zpracování vašeho dotazu. Pokud vidíte DEPENDENT SUBQUERY měli byste refaktorovat, jsou megapomalé.



  1. Zrychlete Django &Postgres pomocí jednoduchého pole JSON

  2. Znovu nainstalujte Wamp Server bez nahrazení stávající databáze mysql

  3. Obsluha stránkování se změnou pořadí řazení

  4. Při použití whereHas v Laravelu vyberte SUM z poddotazu