Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist eine schnellere einzelne große Abfrage oder wenige kleine Abfragen?

Jeder "Roundtrip" zur Datenbank hat einen gewissen Overhead. Je weniger Roundtrips also, desto weniger Overhead. Bedenken Sie auch, dass weniger Anfragen weniger Pakete vom Client zum Server bedeuten. Wenn Ihnen das Ergebnis der konsolidierten Abfrage genau das liefert, was Sie wollen, dann ist eine Einzelabfrage der richtige Weg. Wenn Ihre einzelne Abfrage zusätzliche oder redundante Daten zurückgibt (möglicherweise aufgrund von Denormalisierung), gehen die Overhead-Einsparungen eines einzelnen Roundtrips möglicherweise in den übertragenen zusätzlichen Daten verloren.

Eine weitere Überlegung ist die Latenz. Wenn die Abfragen nacheinander abgeschlossen werden müssen, weil ein Teil der Ausgabe einer Abfrage in der Eingabe der nächsten benötigt wird, werden durch die Konsolidierung in einer Abfrage alle Netzwerklatenzen zwischen all den einzelnen kleineren Abfragen entfernt, sodass ein Endergebnis möglich ist schneller geliefert werden. Wenn die kleineren Abfragen jedoch unabhängig voneinander sind, können durch ihre parallele Ausführung alle Ergebnisse schneller, wenn auch weniger effizient, geliefert werden.

Fazit:Die Antwort hängt von den Besonderheiten Ihrer Situation ab. Der beste Weg, um eine Antwort zu erhalten, besteht wahrscheinlich darin, beide Methoden zu implementieren, die Ressourcennutzung jeder Implementierung zu testen und zu vergleichen.