MySQL Geschwindigkeit LEFT JOIN vs. Kreuzprodukt
04.06.2012 12:22 Uhr
Hallo zusammen,
wie kann es sein, dass das Left Join [1] MySQL zum Absturz bringt und das Kreuzprodukt [2] in 0,1s ausgeführt wird? Hab ich was verpasst? HAb ich was vergessen?
1------------------------
SELECT c.customers_id FROM customers c LEFT JOIN orders o ON c.customers_id=o.customers_id WHERE NOT c.customers_id='0'
/1-----------------------
2------------------------
SELECT c.customers_id FROM customers c, orders o WHERE c.customers_id=o.customers_id AND NOT c.customers_id='0'
/2-----------------------
4 Antworten
#1
04.06.2012 19:38 Uhr
|
So wie es aussieht habe ich das LEFT JOIN wohl doch nicht richtig verstanden. Ich muss die Where Klausel wie folgt erweitern, so dass die Referenz zustandekommt...
SELECT
c.customers_id
FROM customers c LEFT JOIN orders o
ON c.customers_id=o.customers_id
WHERE
c.customers_id=o.customers_id AND NOT c.customers_id='0'
Ich habe immer gedacht, das würde schon das ON machen
|
#2
04.06.2012 19:44 Uhr
|
Oder ich tausche links und rechts vom Join
SELECT
c.customers_id
FROM orders o LEFT JOIN customers c
ON c.customers_id=o.customers_id
WHERE NOT c.customers_id='0'
|
#3
05.06.2012 08:36 Uhr
|
Das ON übernimmt auch die Verknüpfung der Spalten beider Tabellen beim JOIN.
Ist es vielleicht möglich, dass du einen Denkfehler in den Queries hast? [1] + [2] lesen sich so als würdest du alle Kunden haben wollen, die jemals eine Bestellung aufgegeben haben.
In
SELECT
c.customers_id
FROM orders o LEFT JOIN customers c
ON c.customers_id=o.customers_id
WHERE NOT c.customers_id='0'
ist es doch etwas anders. Du holst dir alle zu den Bestellungen gehörigen ID's und da funktioniert das ON ja auch wie gedacht, oder?
|
|
#4
05.06.2012 08:45 Uhr
|
----kann weg---
|
Ähnliche Fragen
|