MySQL-Result durchzählen

Post von realloc | Einsortiert in Code am 6. Oktober 2008 | Keine Kommentare

Eine Funktion, die eigentlich in die Meckerecke gehört, ist mysql_num_rows. Das liegt meiner bescheidenen Meinung nach an genau 2 Problemen, die mit dieser Funktion eng verbunden sind. Das erste Problem wird schon in der Beschreibung zur Funktion selbst geliefert:

Hinweis: Wenn Sie mysql_unbuffered_query() verwenden, liefert mysql_num_rows() solange nicht den korrekten Wert, bis Sie alle Zeilen der Ergebnismenge erhalten haben.

Das zweite Problem wird offensichtlich, sobald man es mit einer größeren Tabelle und den entsprechenden Datenmengen zu tun hat. mysql_num_rows bezieht sich auf das Handle des Results und ist gegen den Einsatz eines weiteren SELECT-Statements wie z.B.

[code lang="sql"]SELECT COUNT(id) FROM table WHERE ...[/code]

weit unterlegen. Das liegt einfach daran, dass man bei einem weiteren Statement ganz gezielt den Index nutzen kann und das gelieferte Resultat lediglich aus einer Zahl besteht.

Mit dem Zählen des Results sollte man sowieso sparsam umgehen. Vermutlich ist das in den meisten Fällen lediglich für die ein Blättern durch die Ergebnismenge von Interesse. Ansonsten kann man sich die Daten auch sinnig von der Datenbank holen und weiß dann schon, wieviele Datensätze da genau angekommen sind.

Have fun!

Möglicherweise interessiert Dich auch...



Einen Kommentar schreiben