4

ドキュメントによると、準備されたクエリは、クエリを解析する MySQL サーバーのオーバーヘッドが 1 回しか発生しないため、クエリを複数回実行している場合にパフォーマンスが大幅に向上します。そこでの「複数回」とは正確にはどういう意味なのか疑問に思っています。

つまり、クエリを 1 回実行する Web ページがあるとします。ここで、そのページが毎秒 50 回呼び出されるとします。パフォーマンスの観点から、クエリを prepare() する方が理にかなっていますか (したがって、DB サーバーへの 2 回のラウンドトリップが必要です。1 回はクエリの準備に、もう 1 回はクエリの実行に必要です)、またはクエリを通常どおりに送信するだけです (1 回のラウンドトリップのみが必要です)。 ? MySQL および/または PHP mysqli ドライバーは、以前の呼び出しでクエリがいつ prepare() されたかを認識するのに十分スマートですか?

4

1 に答える 1

7

いいえ。PHP は「シェアード ナッシング」アーキテクチャであるため、1 つのリクエスト (1 ページ ビュー) に関連付けられたすべてのリソースは、そのリクエストの最後に破棄されます。準備されたクエリは、後続のデータベース接続では使用できません。

準備されたクエリのメリットが得られるシナリオは、同じ PHP リクエストでクエリを準備して何度も実行する場合です。

于 2008-11-26T22:06:33.883 に答える