5

Web サーバーからデータベースへの移動の合計が 1 回だけであるという意味で、mysqli のマルチクエリが真のマルチクエリであることに真剣に疑問を抱いています。

5 ステートメントのマルチクエリを呼び出す場合、multi_query() を 1 回実行し、next_result() を 4 回実行する必要があります。

では、Web サーバーからデータベースへの 5 回のトリップではありませんか?

それに加えて、mysqli_use_result()呼び出し ごとにデータベースへの 1 回のトリップが必要ですかmysqli_more_results()?mysqli_store_result()

4

2 に答える 2

0

はい。mysqli::multi_query同じ MySQL パケットで複数のクエリを送信します。

于 2011-07-24T19:09:44.247 に答える
0

はい、mysqli:multi_query()一度に SQL をサーバーに送信します。この操作は非同期です。PHP は、MySQL が完全な SQL を実行するのを待ちません。mysqli が 1 つの結果を取得するとすぐに、コントロールは PHP スクリプトに戻されますが、SQL の実行は MySQL サーバーで続行されます。

ただし、結果を取得するには、PHP スクリプトをブロックし、MySQL に結果を提供するように依頼する必要があります。next_result()これが、 5 回の結果を期待する場合、4 回呼び出す必要がある理由です。各呼び出しは、結果を要求するためにサーバーへの新しいトリップを作成します。結果は、既に準備ができていてフェッチされるのを待っているかどうかにかかわらず可能性があります。

実際には、MySQL サーバーに 5 回以上アクセスすることになる場合があります。これだけで PHP スクリプトのパフォーマンスが向上するわけではないことに注意してください。MySQL サーバーで SQL を大量に実行する非常に正当な理由がない限り、使用しないでくださいmysqli::multi_query()。準備済みステートメントの使用に固執します。

于 2020-11-05T23:04:09.257 に答える