Join?

Maik20

Erfahrenes Mitglied
Hallo,

ich habe zwei Tabellen mit folgenden Feldern:

Daten:
KatalogID | Nummer | Anzahl

Grunddaten:
Block | KatID | Nummer

Jetzt möchte ich beide miteinander Verbinden. Dazu habe ich eine Abfrage wie folgt erstellt. Mein Problem, die Abfrage dauert ca. 30 Sekunden. Kann man das irgendwie optimieren?

Code:
SELECT LEFT( daten.Nummer, 2 ) AS DN, SUM( 
CASE WHEN gdaten.BLOCK =1
THEN daten.ANZAHL
END ) AS A1, SUM( 
CASE WHEN gdaten.BLOCK =2
THEN daten.ANZAHL
END ) AS A2
FROM (
gdaten
LEFT JOIN daten ON ( gdaten.KatID = daten.KatalogID ) 
AND (
gdaten.Nummer = daten.Nummer
)
)
GROUP BY LEFT( daten.Nummer, 2 ) 
ORDER BY A1 ASC 
LIMIT 0 , 21

Die Tabelle Grunddaten (gdaten) enthält ca. 300.000 Datensätze.

Als Schlüssel sind die folgenden Spalten definiert:
Grunddaten:
Index1: Block, KatID, Nummer
Index2: KatID, Nummer

Daten:
Index1: KatalogID, Nummer

Die Explain Anweisung zeigt folgendes:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE gdaten range Index Index 8 NULL 311988 Using where; Using temporary; Using filesort
1 SIMPLE daten ref ID ID 16 daten.KatalogID,daten.Nummer 6 Using where
 

Neue Beiträge

Zurück