SELECT COUNT () vs mysql_num_rows ();
Ich habe einen großen Tisch (60+) mit Millionen von Datensätzen.
Ich benutze PHP-Skript, um durch diese Tabelle zu navigieren.
PHP-Skript (mit Paginierung) wird sehr schnell geladen, weil:
Die Tabellen-Engine ist also InnoDBSELECT COUNT()
ist sehr langsam undmysql_num_rows()
ist keine Option, daher behalte ich die Gesamtanzahl der Zeilen (die Zahl, mit der ich die Paginierung generiere) in einer separaten Tabelle (ich aktualisiere diesen Datensatz)total_rows=total_rows-1
undtotal_rows=total_rows1+1
währendDELETE
undINSERT
).
Aber die Frage ist, was mit der Paginierung von Suchergebnissen zu tun ist.
Im Moment mache ich das mit 2 Schritten:
1.
$condition = " fname='rinchik' ";
$result = "SELECT * FROM my_large_table WHERE" . $condition;
Hier habe ich alle Suchergebnisse aus der Datenbank.
2. Jetzt muss ich diese Ergebnisse zählen, um Paginierung zu verursachen. Ich mache das:
$condition; <- we already have this from the step 1
$result_count = "SELECT COUNT(id) FROM my_large_table WHERE" . $condition;
Und es ist ein bisschen langsam.
Wäre es besser, wenn ich es so mache (mit nur einem Schritt) ?:
$condition = " fname='rinchik' ";
$result = "SELECT * FROM my_large_table WHERE" . $condition;
$result_count = mysql_num_rows($result);