Die folgende MySQL-Abfrage, die doppelt verschachtelten Unterabfragen verwendet, ist zu langsamNested Subquery zu langsam
SELECT t.name
FROM creatives AS c
INNER JOIN term_relationships AS tr ON tr.creative_id=c.creative_id
INNER JOIN terms AS t ON t.term_id=tr.term_id
WHERE c.creative_id IN
(SELECT creative_id
FROM term_relationships
WHERE term_id IN
(SELECT offer_term_id
FROM offer_urls))
AND t.taxonomy LIKE 'ad_network';
Die innere Abfrage
SELECT creative_id
FROM term_relationships
WHERE term_id IN
(SELECT offer_term_id
FROM offer_urls)
extrem schnell ist (0,04 Sekunden)
aber die volle Abfrage liefert die Ergebnisse nicht. Ich gab nach etwa fünf Minuten Wartezeit auf.
Irgendeine Möglichkeit, dies zu optimieren?
warum nicht versuchen Sie stattdessen eine 'LINKE OUTER JOIN' und einen Null-Check? Während diese nächste Aussage reine Vermutung ist, würde ich annehmen, dass die Unterabfragen pro abgerufener Zeile ausgeführt werden (also Zeile a, führt eine Unterabfrage für alle Zeilen b aus, die einzeln für alle Zeilen ausgeführt werden). – Rogue
Sind Ihre Tabellen ordnungsgemäß indiziert? –