Rewriting MySQL auswählen, um die Zeit zu reduzieren und tmp auf die Festplatte zu schreiben

Ich habe eine MySQL-Abfrage, die mehrere Minuten dauert, was nicht sehr gut ist, da sie zum Erstellen einer Webseite verwendet wird.

Drei Tabellen werden verwendet: poster_data enthält Informationen zu einzelnen Postern. poster_categories listet alle Kategorien (Filme, Kunst usw.) auf, während poster_prodcat die Posterid-Nummer und die Kategorien auflistet, in denen es sich befinden kann, z. Ein Plakat hätte mehrere Zeilen, zum Beispiel Filme, Indiana Jones, Harrison Ford, Abenteuerfilme usw.

dies ist die langsame Abfrage:

select * 
  from poster_prodcat, 
       poster_data, 
       poster_categories 
 where poster_data.apnumber = poster_prodcat.apnumber 
   and poster_categories.apcatnum = poster_prodcat.apcatnum 
   and poster_prodcat.apcatnum='623'  
ORDER BY aptitle ASC 
   LIMIT 0, 32

Entsprechend der Erklärung:

s dauerte ein paar Minuten. Poster_data hat etwas mehr als 800.000 Zeilen, während poster_prodcat etwas mehr als 17 Millionen Zeilen hat. Andere Kategorieabfragen mit dieser Auswahl sind kaum zu bemerken, während poster_prodcat.apcatnum = '623' ungefähr 400.000 Ergebnisse liefert und auf disk @ schreib

Antworten auf die Frage(8)

Ihre Antwort auf die Frage