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

Abrufen der Anzahl der Ergebnisse, die von einer MySQL-Abfrage mit JDBC auf die leistungseffizienteste Weise zurückgegeben werden

Das Erstellen einer separaten Abfrage ist (meiner Meinung nach) keine gute Lösung, da der Server die Zeilen zweimal nach einer Ergebnismenge durchsucht.

Um eine "doppelte" Abfrage zu verhindern, hat MySQL die Funktion FOUND_ROWS(), sie gibt eine Anzahl von Zeilen zurück, die für aktuelle Bedingungen von WHERE gegründet wurden Klausel. Dies ist sehr nützlich, wenn Sie LIMIT und OFFSET in der Abfrage verwenden. Ich glaube, dass die Verwendung dieser Funktion eine bessere Lösung ist. http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows

Ich hatte vor einiger Zeit gelesen, dass JDBC Zeilen vom Server streamt, aber dies war keine offizielle Dokumentation und ich kann nicht sagen, wie es in der Gegenwart funktioniert, aber Abfragen können unterschiedlich sein - mit schwierigen Unterabfragen und Verknüpfungen. Ich denke, dass der Server alle Ressourcen beenden kann, wenn er diese Zeilen nur "streamt", wenn der Client danach fragt.