sql >> データベース >  >> RDS >> Mysql

プリペアドステートメントがプリコンパイルされているとはどういう意味ですか?

    プリペアドステートメント(つまり、プリコンパイルされたステートメント)を使用する場合、DBはこのステートメントを取得するとすぐにコンパイルしてキャッシュし、最後にコンパイルされたステートメントを同じステートメントの連続呼び出しに使用できるようにします。したがって、後続の呼び出し用にプリコンパイルされます。

    通常、実行時に変数を提供するバインド変数でプリペアドステートメントを使用します。これで、プリペアドステートメントの連続実行で何が起こるか、以前の呼び出しとは異なる変数を提供できます。 DBの観点からは、ステートメントを毎回コンパイルする必要はなく、ラム時にバインド変数を挿入するだけです。だから速くなります。

    プリペアドステートメントの他の利点は次のとおりです:-

    1)SQLインジェクション攻撃からの保護

    2)同じステートメントの連続呼び出しの高速化

    仕組み:-

    1. 事前コンパイルはデータベースによって行われます。一部の単純なデータベースは、ステートメントをまったくプリコンパイルしません。他の人はprepareStatement呼び出しでそれをプリコンパイルするかもしれません、そしてさらに他の人はステートメントをコンパイルする(計画を作成する)ときにパラメータの値を考慮に入れて、ステートメントでexecuteが最初に呼び出されるときにそれを行うかもしれません。

    2. プリコンパイルステートメントを実行するデータベースは通常それらをキャッシュするため、おそらくps1は再度コンパイルされません。一部のJDBCドライバー(Oracleなど)は、プリペアドステートメントをキャッシュするため、ps.close()が呼び出されたときに実際には閉じていません。

    3. データベースは通常、何かがステートメントをキャッシュから削除するまでステートメントをキャッシュします。

    詳細については、このwiki を参照してください。 リンク



    1. 重要なSQLデータベースを回復するための2020年に最適なSQL回復ツール

    2. ユーザー登録時にサブドメインを自動作成すると、新しいWebサイトが作成されますか、それともWebサイトの外観が表示されますか?

    3. MySQLの基本的な結合について

    4. SQLDeveloperが起動しない