Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySql] JOIN a WHERE
Petre
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 12.05.2012

Ostrzeżenie: (0%)
-----


Witajcie

pytam wujka google, ale nie daje mi jednoznacznej odpowiedzi.

Jaka jest różnica między np:

  1. SELECT *
  2. FROM Orders
  3. LEFT JOIN OrderLines ON OrderLines.OrderID=Orders.ID
  4. WHERE Orders.ID = 12345



  1. SELECT *
  2. FROM Orders
  3. LEFT JOIN OrderLines ON OrderLines.OrderID=Orders.ID AND Orders.ID=12345


dokładnie rzecz ujmując chodzi mi o zastosowanie WHERE oraz AND za ON. Która wersja jest poprawniejsza i bardziej wydajna w przypadku większej ilości połączeń?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sazian
post
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


ja bym dał część warunku z pierwszego LEFT JOIN do WHERE, a warunek z WHERE do pierwszego LEFT JOIN
  1. FROM produkty p
  2. LEFT JOIN produkty_jezyki pj ON p.id_prod=pj.id_prod AND pj.id_lang=1
  3. WHERE p.stan=1 AND p.detal=1


chociaż mogę się mylić nie znając dokładniej sytuacji

warto by też pomyśleć o wywaleniu GROUP BY, może da się do zastąpić jakimś warunkiem ? GROUP BY ma to do siebie że jest dosyć wolny i zasobożerny

zrób EXPLAIN tego zapytania i zobacz co wyjdzie, co jest bardziej optymalne
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 17:30