[linux-l] SQL

olafBuddenhagen at gmx.net olafBuddenhagen at gmx.net
Sa Okt 21 16:41:04 CEST 2006


Hallo,

On Fri, Oct 20, 2006 at 03:50:52PM +0200, Frank Reker wrote:
> Am Fri 20. Oct 2006 13:24 +0000 schrieb olafBuddenhagen at gmx.net:
> 
> >On Wed, Oct 18, 2006 at 09:17:45AM +0200, Volker Grabsch wrote:
> >
> >> Was meint ihr dazu? Wo liegen die Vor- und Nachteile von expliziten
> >> JOINs? Wo liegen die Performance-Unterschiede? Was findet ihr
> >> übersichtlicher?
> >
> >Performance-Unterschiede sollte es in der Regel nicht geben. Eher
> >sollte
> 
> theorie und praxis! es kann deutliche performance unterschiede
> zwischen verschachtelten selects, inner joins und left joins geben.

Meine Erfahrung ist, dass zumindest MySQL fast alle sub-SELECTS
vernünftig optimieren kann, und es dann keinerlei
Performance-Unterschiede gibt. Gibt nur wenige Konstrukte, die man
tunlichst meiden sollte.

> auch die reihenfolge der tabellen und filterregeln koennen beachtliche
> unterschiede ausmachen. ich hab allein durch umstellen der reihenfolge
> laufzeiten schon von einer halben stunde auf wenige sekunden
> reduzieren koennen (oracle).

Sollte nur in extrem verzwickten Fällen nötig sein. In der Regel kann
die Datenbank anhand der Werteverteilung selbst recht gut entscheiden,
in welcher Reihenfolge die JOINs am besten ausgeführt werden.

Dazu müssen natürlich aktuelle Informationen über die Werteverteilung
vorliegen. Den entsprechenden Befehl in MySQL über die relevanten
Tabellen laufen zu lassen, kann tatsächlich erstaunliches bewirken...

-Olaf-



Mehr Informationen über die Mailingliste linux-l