Performanceprobleme mit MySQL-Query
Bobby
- datenbank
Moin
Ich habe mehrere Tabellen in MySQL aufgebaut, die ich mit JOINS verbinde.
______________
Tabelle:
jos_search_zweiradtyp
Felder:
id_typ
id_zweiradfirma
typ_name
id_zweiradklasse
______________
Tabelle:
jos_search_zweiradklasse
Felder:
id_klasse
klasse_name
_______________
Tabelle:
jos_search_zweiradfirma
Felder:
id_firma
firma_name
_______________
Tabelle:
jos_search_paare
Felder:
id_paar
typ_id
vorderrad
hinterrad
Folgende Abfrage , ohne die Abfrage der Tabelle jos_search_paare, funktioniert hervorragend schnell:
SELECT SQL_CALC_FOUND_ROWS jos_search_zweiradtyp.*, jos_search_zweiradfirma.firma_name hersteller, jos_search_zweiradklasse.klasse_name klasse
FROM jos_search_zweiradtyp
LEFT JOIN jos_search_zweiradklasse ON (id_klasse = id_zweiradklasse)
LEFT JOIN jos_search_zweiradfirma ON (id_firma = id_zweiradfirma)
LIMIT 0,20
Wenn ich jedoch noch die Anzahl der gefundenen Paare die dem Typ zugeordnet sind mit heraussuchen lassen möchte dauert die Abfrage extrem lang. Ich habe folgendes probiert:
SELECT SQL_CALC_FOUND_ROWS jos_search_zweiradtyp.*, jos_search_zweiradfirma.firma_name hersteller, jos_search_zweiradklasse.klasse_name klasse ,
(SELECT COUNT(id_paar) WHERE id_typ=typ_id) paare
FROM jos_search_zweiradtyp
LEFT JOIN jos_search_zweiradklasse ON (id_klasse = id_zweiradklasse)
LEFT JOIN jos_search_zweiradfirma ON (id_firma = id_zweiradfirma)
LIMIT 0,20
Woran kann dieses Performanceproblem liegen? Wie kann ich dieses beheben? Für Hinweise bin ich dankbar.
Gruß Bobby
Moin
OK, selbst gelöst.
Ich musste lediglich einen Index über die Spalte typ_id der Tabelle
jos_search_paare legen, damit eine ordentliche Referenzierung möglich ist.
Mein Fehler. Nun funktionierts wie gewünscht.
Gruß Bobby