MySQLが準備したクエリは、セッションごとに1回のクエリに対してパフォーマンス上の利点を提供しますか?
-
11-07-2019 - |
質問
ドキュメントによると、クエリを解析するMySQLサーバーのオーバーヘッドは1回しか発生しないため、クエリを複数回実行している場合、準備されたクエリを使用するとパフォーマンスが大幅に向上します。 「複数回」とはどういう意味か不思議に思っています。
つまり、クエリを1回実行するWebページがあるとします。ここで、そのページが1秒間に50回呼び出されるとします。パフォーマンスの観点から、クエリをprepare()(それによりDBサーバーへの2つのラウンドトリップが必要; 1つはクエリの準備、1つが実行)、または通常のクエリの送信(1つのラウンドトリップのみが必要) ? MySQLおよび/またはPHP mysqliドライバーは、以前の呼び出しでクエリがprepare()されたことを認識するのに十分スマートですか?
解決
いいえ。 PHPは「共有なし」です。そのため、1つのリクエスト(1ページビュー)に関連付けられているすべてのリソースは、そのリクエストの終わりに破棄されます。準備されたクエリは、後続のデータベース接続では使用できません。
準備されたクエリの利点を得るシナリオは、同じPHPリクエストの間に準備して何度も実行することです。
所属していません StackOverflow