Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP/MySQL] komplexe vs. viele einfache Queries (https://www.delphipraxis.net/97535-%5Bphp-mysql%5D-komplexe-vs-viele-einfache-queries.html)

Daniel G 12. Aug 2007 12:23


[PHP/MySQL] komplexe vs. viele einfache Queries
 
Moin, moin,

Ich habe mal eine pure Interessensfrage.

Ich bin auf dem Gebiet Webprogrammierung/SQL noch relativ unerfahren (~2 Monate am Basteln) und habe spaßeshalber mal die Queries auf meiner HP zählen lassen (Software ist ne Eigenentwicklung). Ich liege bei meinen statische Seiten bei ~30, bei meinem Blog aber schon bei ~50 Queries. Die Queries sind alle relativ simpel gestrickt, also keine komplexen Verknüpfungen mit "JOIN" o.ä. Performance-Probleme kann ich keine feststellen. (Wer will, kann sich ja selbst ein Bild machen. ;) )

Dennoch frage ich mich, ob es nicht sinnvoller wäre, die Anzahl der Queries dahingehend zu reduzieren, als dass ich einige "größere" Queries konstruier und die Daten "mit einem Schlag" aus der DB hole.

Oder nimmt sich das gar nicht viel?

(Wie gesagt: Reine Interessensfrage. Ich versuche kein Problem zu beheben, wo es keins gibt. ;) )

Bernhard Geyer 12. Aug 2007 14:31

Re: [PHP/MySQL] komplexe vs. viele einfache Queries
 
Kommt darauf an wie "nah" Anwendung und DB beieinander liegen. Dauert benötigt z.B. der Netzverkehr (Ping-Zeit) 10 ms um von Anwendung zur DB zu kommen kannst du dir ausrechnen wie 50 simple Abfragen benötigen. Bei komplexen Anwendungen besteht bei großen DB's die Gefahr das der Query Parser einen suboptimale Ausführungsplan erzeugt und Full-Table-Scanns durchführt.

Daniel G 13. Aug 2007 11:55

Re: [PHP/MySQL] komplexe vs. viele einfache Queries
 
Moin Bernhard,

danke dir, das mit dem Ping klingt eigentlich einleuchtend. Ich denke, beim nächsten Review werde ich mal schauen, welche Queries überflüssig sind (sprich durch globale Variablen ersetzt werden können) und welche ich noch zusammenfassen kann.

arbu man 13. Aug 2007 13:51

Re: [PHP/MySQL] komplexe vs. viele einfache Queries
 
Wenn der DB-Server aber auf Localhost läuft, dürften die Ping Zeiten sehr klein sein...

shmia 13. Aug 2007 14:16

Re: [PHP/MySQL] komplexe vs. viele einfache Queries
 
In aller Regel ist es so, dass komplexere SQL-Abfragen deutlich schneller sind, als mehrere einfache Abfragen.
Vorallem verdichtete Ergebnisse mit SUM(), MIN(), MAX(), COUNT() und GROUP BY benötigen weniger Zeit, als wenn man alle Datensätze anfordert und die Summen in der Anwendung ausrechnet.
Die höchste Performance erhält man dann, wenn man für jedes Problem eine eigene maßgeschneiderte Abfrage hat. (maßgeschneidert heisst: man ruft nur die Felder und Datensätze ab, die man wirklich braucht. kein SELECT * FROM)
Natürlich müssen alle Indizies vorhanden sein, damit das DBMS die Abfragen effiziert durchführen kann.
Allerdings erschweren viele maßgeschneiderte Abfragen, dass man die Datenbank strukturiell einfach erweitern oder verändern kann.

==> Verlagerung von "Arbeit" von der Anwendung zur Datenbank erhöht die Performance aber erschwert die Entwicklung und Portabilität

Daniel G 24. Aug 2007 18:24

Re: [PHP/MySQL] komplexe vs. viele einfache Queries
 
Hi Andreas,

Danke! :thumb: Auf "*" Abfragen habe ich eigentlich von vornherein verzichtet. Warum soll ich den Speicher mit Sachen zumüllen, die ich eh nicht brauche? Ein, zwei Stellen konnte ich noch mit "COUNT" vereinfachen, alles in allem scheint die Performance aber doch so in Ordnung zu sein. Danke für die Tipps.

(N' bissel spät, die Antwort, aber was soll's.. :oops: )


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz