Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Performance - PHP Schleife innerhalb Schleife vs. MySQL Abfrage nach einem Wert

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Zitat von jspit Beitrag anzeigen
    Welche Variante da die performantere ist kann eben nicht pauschal beantwortet werden.
    Man kann aber insgesamt schon sagen, dass man mit einer Datenbank in der Regel Daten performanter verknüpfen kann als mit riesigen PHP Arrays, die man durchiterieren muss.
    Ich persönlich finde, dass man alles was man mit (T-/PL-/pg-)SQL abbilden kann auch der Datenbank überlassen sollte. Auch wenn da natürlich die Gefahr besteht, dass man sich von einem bestimmten DBMS sehr abhängig macht.

    Zitat von jspit Beitrag anzeigen
    Hab selbst noch eine Frage zu "Select * .." an die DB-Spezialisten:
    Ist meine Annahme richtig, das ein Select * mit mehreren Join's zu Tabellen von denen nicht alle Werte benötigt werden die Datenbank bez. Speicher auch extrem belastet und langsam macht
    Klar, mindestens Netzwerk Traffic und Disk I/O (jetzt mal abgesehen von In-Memory Datenbanken) steigen, ggf. aber auch CPU Last je nach Ausführungsplan.
    sorry, shift-taste kaputt

    Kommentar


    • #17
      Bei beiden Varianten hängt die Performance ja stark davon ab wie geschickt die SQL-Anweisung/Datenbankstruktur aufgebaut ist bzw. die Arrays strukturiert sind und verknüpft werden.
      Ohne diese Strukturen zu kennen kann eben nicht pauschal beantwortet werden welche Variante für einen konkreten Anwendungsfall die bessere Performance bringt.
      Um dies zu sehen muss eben nur mal die Zeit für diese Aktionen gestoppt werden, wie hier schon empfohlen. Das sollte nicht das Problem sein.
      Man sollte wohl als erstes immer das per SQL inklusive Optimierung (Indexe) zu probieren/testen und erst wenn dies sich als "Klemmstelle" für die danze Applikation herausstellen sollte dann diverse Arraysvarianten prüfen.
      Ab einen gewissen Datenumfang wird ja auch die Arbeit mit Arrays dann vom Grundsatz nicht mehr effektiv. Und bei einen kleinen Datenumfang spielt die Zeit für solche Verknüpfungen dann gegenüber anderen Aktionen im Gesamtkontext der Applikation oft keine Rolle mehr. Dort tritt dann eine gute Lesbarkeit und Übersicht der notierten Anweisungen in den Vordergrund. Da hat SQL für mich eindeutig die Nase vorn.

      Kommentar


      • #18
        Ich persönlich finde, dass man alles was man mit (T-/PL-/pg-)SQL abbilden kann auch der Datenbank überlassen sollte. Auch wenn da natürlich die Gefahr besteht, dass man sich von einem bestimmten DBMS sehr abhängig macht.
        Das würde ich nicht (einfach) so unterschreiben.
        Wenn man mehrere Schritte braucht um die Daten zu holen, dann möchte ich* diese Schritte eher in der Anwendung abbilden. Ansonsten entsteht mir zu viel organisatorischer Overhead wenn man zusätzlich zum Code, dem Schema, den Ressourcen.. auch noch die Prozeduren verwalten und migrieren muss.

        * Als jemand der bisher nur in kleinen Teams gearbeitet hat. Wenn es tatsächlich eine Trennung zwischen Datenbankleuten und Codeleuten gibt und/oder die organisatorischen Dinge schon geregelt sind kann das sicher anders aussehen.
        [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
        [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

        Kommentar


        • #19
          Ich hab selbst schon praktische Tests hinter mir. Normaler weise sind Datenbanken optimiert, sonst wäre das ja nicht den Namen wert. Allerdings kann es sein, dass man bestimmte Aufgaben Lokal im Speicher schneller verarbeiten kann. Vor allem, wenn man viel zwischen DB und PHP versendet und die DB ganz wo anders liegt. Es lohnt sich sowas auch mal zu testen. Vor allem kann man aber Vermutungen schon voranalysieren, wenn man sich darum kümmert, wie eine Infrastruktur aufgebaut ist, mit der man arbeiten will.
          bitcoin.de <- Meine Freelancerwährung

          Kommentar

          Lädt...
          X