wie zu optimieren, eine left join-Abfrage?

Ich habe zwei Tabellen, jos_eimcart_customers_addresses und jos_eimcart_customers. Ich will ziehen Sie alle Datensätze aus der Tabelle Kunden, und umfassen-Adresse, soweit verfügbar, Angaben aus der Tabelle "Adressen". Die Abfrage funktioniert, aber auf meinem localhost Rechner dauerte es über eine minute um zu starten. Auf localhost, die Tabellen sind über 8000 Zeilen jeder, aber in der Produktion könnte die Tabellen sind nach oben von 25.000 Zeilen jeweils. Gibt es eine Möglichkeit, um dies zu optimieren, damit es nicht so lange dauern? Beide Tabellen haben einen index auf das Feld id, die Primärschlüssel. Gibt es eine andere index brauche ich, um zu erstellen, dass würde helfen, dies schneller zu laufen? Sollten die Adressen-Tabelle über einen index auf die customer_id Feld, da es ein Fremdschlüssel? Ich habe andere Datenbank Abfragen, die ähnlich sind, und führen Sie auf viel größere Tabellen, mehr schnell.

(BEARBEITET, UM HINZUFÜGEN: Es kann mehr als eine Adresse Datensatz pro Kunde, so customer_id ist nicht ein eindeutiger Wert in der Tabelle "Adressen".)

select 
    c.firstname,
    c.lastname,
    c.email as customer_email, 
    a.email as address_email,
    c.phone as customer_phone,
    a.phone as address_phone,
    a.company,
    a.address1,
    a.address2,
    a.city,
    a.state,a.zip, 
    c.last_signin
from jos_eimcart_customers c
    left join  jos_eimcart_customers_addresses a  
    on c.id = a.customer_id  
order by c.last_signin desc

BEARBEITET, UM HINZUFÜGEN: Erklären Sie die Ergebnisse

id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
==========================================================================================
1  | SIMPLE      |  c    |  ALL |   NULL        | NULL| NULL    |NULL |6175  |Using temporary; Using filesort
---------------------------------------------------------------------------------------
1  | SIMPLE      |  a    |  ALL |   NULL        | NULL| NULL    |NULL |8111  |

InformationsquelleAutor EmmyS | 2010-10-22

Schreibe einen Kommentar