• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PreparedStatement と Statement について)

PreparedStatementとStatementについて

このQ&Aのポイント
  • PreparedStatementとStatementについて教えてください。
  • PreparedStatementは処理速度が40%~50%ほど短縮されるが、その逆のケースはあるのか。
  • Webアプリケーションを作成する際はレスポンス速度も考慮し、PreparedStatementにてSQL文を発行すべきか。

質問者が選んだベストアンサー

  • ベストアンサー
  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

PreparedStatement を使用しても、速度が改善される場合はあまりありません。 ほとんどの場合、Statement と、PreparedStatement は、同じ位の速度です。 場合によっては、PreparedStatement の方が、画期的に速い場合もあります。 ●Statement が有効な場合 Statement を使用する時の多くは、例えば、固定の SQL 文字列を DAO から 実行する時。には、Statement を使用する事もあります。 Statement を使用して、固定の SQL 文を短い時間に、複数回実行した場合、RDBMS 内で、SQL 実行計画をリサイクルしてくれるかもしれないと期待できます。 また、PreparedStatement では処理しきれないような複雑な SQL 文を動的に生成しているような場合。 同じ SQL が短い時間内に生成される可能性が低く、加えて、SQL 文が複雑な場合、PreparedStatement が有効に活用できないでしょう。 この場合、SQL インジェクション対策はPreparedStatementを使用する場合と同じではないと思いますので、注意が必要かと思います。 ●PreparedStatement が有効な場合 同じ SQL で ? の部分のみ入れ替えて、PreparedStatement のインスタンスを連続して使用する場合。 連続して、同じ PreparedStatement を実行した場合、処理速度が速くなる事が期待できます。 SQL インジェクション対策をする場合。 SQL インジェクション対策をする場合、Statement を使用するよりも、PreparedStatement を使用する方が容易であると思われます。

Guno-this
質問者

お礼

どうもありがとうございます。 お礼がおそくなって申し訳ありません。 「PreparedStatement」が早くなるものだと思っていたのですが、 Statement と、PreparedStatement は、同じ位の速度って余り違いがないものだったのですね^^; >PreparedStatement では処理しきれないような複雑な SQL 文を動的に生成しているような場合 すみません、理解が及ばすにイメージができなかったのですが、 「PreparedStatement では処理しきれないような複雑な SQL 文を動的に生成しているような場合」というのはどのような状態なのでしょうか? 「プリペアードステートメントを使いすぎている」という状況なのでしょうか? SQLインジェクションについては まだ余り理解できていないので調べてみます。

Guno-this
質問者

補足

すみません 「プリペアードステートメントを使いすぎている」という状況なのでしょうか?× 「“?”を使いすぎている」という状況なのでしょうか? ○ です。

関連するQ&A