私は知ってmysql_num_rows ( resource $result )
いますが、100%正確ではないということをどこかで読んだことがあります。実際に各行を取得してカウンターを実行する他の選択肢を見てきましたが、それはかなり非効率に聞こえます。正確で効率的なカウントを得るために他の人が何をしているのかを知りたいです。
3 に答える
mysql_num_rows()
を使用していない限り、正確ですmysql_unbuffered_query()
。
を使用している場合はmysql_query()
、mysql_num_rows()
正確です。
を使用している場合mysql_unbuffered_query()
、mysql_num_rows()
すべての行が取得されるまで、間違った結果が返されます。
またはクエリを実行したとき、およびクエリの場合に使用mysql_num_rows()
します。
どちらも十分正確です!!SELECT
SHOW
mysql_affected_rows()
INSERT, UPDATE, REPLACE or DELETE
行数で何をしているのかを正確に知ることは役に立ちますが、ページング結果セットの非常に標準的なアプリケーション用であると思います。
2つのクエリを発行します。1つ目は、2つ目のWHERE基準をすべて使用したCOUNTクエリです。2つ目は、行をフェッチするために使用されます。これか、10行だけを表示する場合は1,000行をメモリにロードします。
ただし、精度を保証する必要がある場合は、2つのクエリを読み取り整合性のあるトランザクションでラップする必要があります。そうしないと、カウントクエリとデータクエリの間で実行されるクエリによって、ページング情報が無効になる可能性があります。