Ist eine SQL Query besser als mehrere?

  • Hallo, ich hab mal ne einfache Frage, undzwar geht es um ein Filtersystem, welches Datenbankeinträge filtern soll, z.B. nach dessen Status. Standardmäßig werden die nach Status 1 gefiltert, man kann aber umstellen auf Sttus 2.


    Jetzt ist meine Frage, ob es Leistungstechnisch schlauer wäre direkt alle Einträge ranzuholen und sie dann im Nachhinein gefiltert auszugeben, oder sollte ich jedes mal eine neue Query machen, wenn ich den Filter umstelle? Dabei geht es mir vor Allem darum, eine möglchst effiziente Lösung zu finden, bei der Datenvolumen gespart wird und alles möglichst schnell angezeigt werden kann.

  • Zitat

    eine möglchst effiziente Lösung zu finden, bei der Datenvolumen gespart wird und alles möglichst schnell angezeigt werden kann

    Die beiden Lösungen haben gegensätzliche Eigenschaften:


    Alles holen und clientseitig filtern:

    Das erste Laden dauert länger aber die Umschaltung des Filters geht schnell. In jedem Fall wird das max. Datenvolumen übertragen.


    Daten holen, je nachdem wie der Filter eingestellt ist:

    Das erste Laden geht schneller aber es entsteht eine geringe Wartezeit, wenn der Filter umgeschaltet wird. Wird der Filter nicht umgeschaltet, ist das Datenvolumen geringer.


    Ich würde es vom Datenvolumen abhängig machen:

    Wenn relativ gering dann alles holen und clientseitig filtern.

    Andernfalls nach Filtereinstellung holen.

  • Grundsätzlich ist die Kernfrage nicht zu beantworten, da es immer auf den Anwendungsfall ankommt. In Deinem Fall würde ich aber zu der Variante tendieren, für jede Filterung eine neue Abfrage zu feuern. Ich denke, die Abfrage über alles könnte mit der Zeit ( Datenbanken füllen sich ja idealer Weise im Laufe der Zeit ) sehr mächtig werden und bspw. zu Überlauffehlern führen. Eine Abfrage für jede neue Filterung sollte demnach schneller sein ( sofern sie optimiert ist ) und ist ja heutzutage für den Anwender der AJAX Technologie kaum spürbar.


    Alles holen und clientseitig filtern:

    Das erste Laden dauert länger aber die Umschaltung des Filters geht schnell.

    Nicht zwingend. Die komplette Datenmenge muss ja irgendwo zwischengespeichert werden. Ich werfe einfach mal die Behauptung in den Raum, dass das in Objekten oder Arrays der Scriptsprache passiert. Die kann bei sehr großen Datenmengen aber auch einige Zeit in Anspruch nehmen und im schlimmsten Fall zu einem Out of Memory führen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!