MySQLが準備したクエリは、セッションごとに1回のクエリに対してパフォーマンス上の利点を提供しますか?

StackOverflow https://stackoverflow.com/questions/322319

質問

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

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

役に立ちましたか?

解決

いいえ。 PHPは「共有なし」です。そのため、1つのリクエスト(1ページビュー)に関連付けられているすべてのリソースは、そのリクエストの終わりに破棄されます。準備されたクエリは、後続のデータベース接続では使用できません。

準備されたクエリの利点を得るシナリオは、同じPHPリクエストの間に準備して何度も実行することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top