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



Datenschutzerklärung · Impressum