Mailinglisten-Archive |
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