3

私は知ってmysql_num_rows ( resource $result )いますが、100%正確ではないということをどこかで読んだことがあります。実際に各行を取得してカウンターを実行する他の選択肢を見てきましたが、それはかなり非効率に聞こえます。正確で効率的なカウントを得るために他の人が何をしているのかを知りたいです。

4

3 に答える 3

10

mysql_num_rows()を使用していない限り、正確ですmysql_unbuffered_query()

を使用している場合はmysql_query()mysql_num_rows()正確です。

を使用している場合mysql_unbuffered_query()mysql_num_rows()すべての行が取得されるまで、間違った結果が返されます。

于 2009-07-28T01:08:19.307 に答える
2

またはクエリを実行したとき、およびクエリの場合に使用mysql_num_rows()します。 どちらも十分正確です!!SELECTSHOWmysql_affected_rows()INSERT, UPDATE, REPLACE or DELETE

于 2009-07-28T01:12:42.413 に答える
0

行数で何をしているのかを正確に知ることは役に立ちますが、ページング結果セットの非常に標準的なアプリケーション用であると思います。

2つのクエリを発行します。1つ目は、2つ目のWHERE基準をすべて使用したCOUNTクエリです。2つ目は、行をフェッチするために使用されます。これか、10行だけを表示する場合は1,000行をメモリにロードします。

ただし、精度を保証する必要がある場合は、2つのクエリを読み取り整合性のあるトランザクションでラップする必要があります。そうしないと、カウントクエリとデータクエリの間で実行されるクエリによって、ページング情報が無効になる可能性があります。

于 2009-07-28T01:29:23.453 に答える