私は何百万ものレコードを持つ大きなテーブル (60+) を持っています。
このテーブルをナビゲートするために PHP スクリプトを使用しています。
PHP スクリプト (ページネーション付き) は、次の理由で非常に高速に読み込まれます。
テーブル エンジンは InnoDBSELECT COUNT()
であるため非常に遅くmysql_num_rows()
、オプションではないため、合計行数 (ページネーションの生成に使用する数) を別のテーブルに保持します (このレコードtotal_rows=total_rows-1
を更新し、実行total_rows=total_rows1+1
中DELETE
にINSERT
)。
しかし問題は、検索結果のページネーションをどうするかということです。
現在、私は2つのステップでこれを行っています:
1.
$condition = " fname='rinchik' ";
$result = "SELECT * FROM my_large_table WHERE" . $condition;
ここでは、DataBase からすべての検索結果を取得しました。
2. 次に、これらの結果を数えてページネーションを作成する必要があります。私はこれをやっています:
$condition; <- we already have this from the step 1
$result_count = "SELECT COUNT(id) FROM my_large_table WHERE" . $condition;
そして、それはちょっと遅いです。
このように(1ステップだけで)行うとよいでしょうか?:
$condition = " fname='rinchik' ";
$result = "SELECT * FROM my_large_table WHERE" . $condition;
$result_count = mysql_num_rows($result);