phpbar.de logo

Mailinglisten-Archive

[php] OT: Welche MySQL Query?

[php] OT: Welche MySQL Query?

Yannik Hampe yannik at cipher-code.de
Fre Dez 22 18:23:08 CET 2006



Michael Borchers wrote:
> Folgende Queries liefern das gleiche Ergebnis.
> 
> Vorteil des LEFT OUTER JOINS liegt ja auf der Hand,
> 
> allerdings gibt es in der Regel immer mind. einen Datensatz in der rechten 
> Tabelle.
> 
> Über EXPLAIN erhalte ich auch das gleiche Ergebnis.
> 
> Kennt jmd Vorteile bzgl Geschwindigkeit?

Das ist für mysql das Gleiche.
Allerdings ist die WHERE-Bedingung in deinem ersten Query doppelt.
Wenn du das WHERE weglässt, ist der einzige Unterschied, dass JOIN mehr
Ergebnisse liefern kann. Nämlich dann, wenn JOIN in der orders Tabelle
etwas findet, was er nicht der orders_products Tabelle zuordnen kann.
Dann bekommst du von JOIN zumindest den Teil aus orders.

Wenn du auf Geschwindigkeit aus bist, dann werde das hier irgendwie los:
orders_products.products_name LIKE '%a%'
Das ist so ziemlich die langsamste Abfrage, mit der du mysql überhaupt
nur beschäftigen kannst und kein index kann dir dabei helfen.
ggf. hilft dir der mysql-Volltextindex.

> 
> 
> 
> 
> 
> SELECT orders.orders_id, orders_products.products_name
> 
> FROM orders
> 
> LEFT OUTER JOIN orders_products ON orders_products.orders_id =
> 
> orders.orders_id
> 
> AND orders_products.products_name LIKE '%a%'
> 
> WHERE orders.orders_id = orders_products.orders_id
> 
> GROUP BY orders.orders_id
> 
> LIMIT 100
> 
> 
> 
> SELECT orders.orders_id, orders_products.products_name
> 
> FROM orders, orders_products
> 
> WHERE orders.orders_id = orders_products.orders_id
> 
> AND orders_products.products_name LIKE '%a%'
> 
> GROUP BY orders.orders_id
> 
> LIMIT 100
> 

Yannik

php::bar PHP Wiki   -   Listenarchive