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);

Antworten auf die Frage(3)

Ihre Antwort auf die Frage