phpbar.de logo

Mailinglisten-Archive

AW: Erfahrung mit MySQL 4.0

AW: Erfahrung mit MySQL 4.0

Elmar Haneke mysql-de_(at)_lists.bttr.org
Sun, 31 Mar 2002 11:49:24 +0000


Dirk Munzinger wrote:

> Es ist richtig wenn das MySQL-Manual darauf hinweist,
> dass man echte Sub-Selects selten wirklich benötigt, 

Das hängt davon ab, was man abfragen möchte. Von einem 
minimalistischen Standpunkt aus gesehen ist SQL allerdings komplett 
überflüssig, da reicht es einzelne Records lesen und schreiben zu können.

Andererseits lassen sich einige Subselects keinesfalls sinnvoll als 
JOIN darstellen, beispielsweise geht die Frage einer Aufschlüsselung 
der Kunden mit Bestellungen im letzten Monat nach PLZ mit Subselect 
ganz direkt:

SELECT PLZ,COUNT(*) FROM Kunden where KdNr in (SELECT KdNr from 
Rechnungen WHERE RechnungsDatum>'1.3.2002')) GROUP BY PLZ

Wenn man keine Subselects hat, wird man die Verknüpfung nicht in einer 
SQL-Abfrage hinbekommen, da

SELECT PLZ,COUNT(*) FROM Kunden,Rechnungen WHERE 
Kunden.KdNr=Rechnungen.KdNr AND RechnungsDatum>'1.3.2002' GROUP BY PLZ

leider nicht identisch ist, sofern es Kunden mit mehreren Rechnungen gibt.

 > Zu der Performance kann ich hierzu
> allerdings nichts sagen - also ob Sub-Selects oder Joins schneller sind.

Das hängt ganz von der Datenbank ab, die Anfrageoptimierung sollte 
sich einen gescheiten Auswertungsplan überlegen und die Anfrage ggf. 
sogar umformulieren.

> Aber dort wo ich JOINS verwende habe ich bis jetzt noch nichts Negatives
> festgestellt.

Ein JOIN ist dort wo er korrekt ist, meistens auch effizient, da hier 
die Indizes der verknüpften Felder ausgewertet werden können.

> Dennoch ist es meiner Meinung falsch vom "Hersteller" zu behaupten
> "Lieber Kunde, du brauchst keine Sub-Selects sondern nur JOINs und
> deshalb habe wir das jetzt auch nicht im Angebot". Lasst uns also auf
> die 4.1er Version hoffen :-)

Ich denke, daß man sich vielmehr überlegen muß, welche Datenbank man 
wo einsetzt. Immerhin gibt es eine ganze Reihe guter Datenbanken, die 
frei verfügbar sind, u.a.:

SAP-DB
Firebird
PostgreSQL

Alle haben ihre spezifischen Vor- und Nachteile. SAP-DB dürfte den 
größten Funktionsumfang haben, Firebird hat auch einen recht 
komplrtten SQL-Sprachumfang und ist dabei vom Programmumfang 
wesentlich kleiner. Der Wesentliche Vorteil von MySQL liegt halt 
darin, daß es für Web-Anwendungen, den Vorzeil hat, daß der 
Verbindungsaufbau sehr flott ist, wenn die DB-Verbindung bereits nach 
wenigen Anfragen wieder gekappt wird, dürfte dies ein sehr wichtiger 
Gesichtspunkt sein - In Büroanwendungen, in denen der Datenbankclient 
den ganzen tag über geöffnet bleibt, ist es hingegen ziemlich 
irrelevant, ob der Client beim Verbindungsaufbau einige Sekunden 
warten muß.

Elmar

---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive