Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Unterschied zwischen Theta Style und INNER JOIN [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Unterschied zwischen Theta Style und INNER JOIN


 
Kropff
17-03-2010, 20:00 
 
Da ich schon seit längerem beruflich nicht mehr so viel mit MySQL zu tun habe, stelle ich mir obige Frage. Worin genau liegt der Unterschied zwischen

SELECT
p.produkt,
p.preis,
h.zulieferer
FROM
produkt p,
hersteller h
WHERE
p.hs_link = h.id
und

SELECT
p.produkt,
p.preis,
h.zulieferer
FROM
produkt p
INNER JOIN
hersteller h ON p.hs_link = h.id
Beide liefern dasselbe Ergebnis und erfüllen dieselbe Aufgabe. Hat das was mit der Abfragegeschwindigkeit zu tun und welche Variante ist empfehlenswerter?

AmicaNoctis? ;)

Peter

 
AmicaNoctis
17-03-2010, 23:43 
 
Hallo Peter,

generell ist die zweite Variante empfehlenswerter. Theta-Style Joins sind böse. Sie können nicht vernünftig mit Aliasen umgehen und erzeugen erstmal ein komplettes Kreuzprodukt, das dann über die Where-Klausel gefiltert wird.

Echte Joins dagegen lassen sich besser optimieren, aliasen und es muss nicht erst ein komplettes Kreuzprodukt erstellt werden, weil die on-Klausel es von vornherein einschränkt. In manchen Fällen entsteht sogar ein Equi-Join, der am effektivsten ist.

Gruß,

Amica

 
Slava
17-03-2010, 23:45 
 
technisch gesehen kein Unterschied.
Aus dem menschlichen Sicht ist aber die Join-Bedingungen viel besser in ON abzulegen und die Suchbedingungen in WHERE um die lesbarkeit von SQLs zu verbessern.

 
AmicaNoctis
17-03-2010, 23:59 
 
Hab nochmal nachgelesen: Ich glaub, Slava hat Recht.

Das Alias-Problem wurde vor kurzem hier (http://www.php-resource.de/forum/sql-datenbanken/98892-query-join-unknown-column.html) angesprochen.

Dann nimm mein erstes Posting einfach als meine persönliche Meinung zur Kenntnis und ignoriere alle Behauptungen, die konträr zu Slavas Beitrag sind ;)

Bezüglich der Empfehlbarkeit wird ANSI-Style (also das was nicht Theta-Style ist) auch von offizieller Seite (MySQL) bevorzugt.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:52 Uhr.