この記事では、MySQLのプリコンパイル機能について紹介します。具体的な内容は以下のとおりです。 1. プリコンパイルの利点 私たちは皆、プリコンパイル機能を備えた JDBC の PreparedStatement インターフェイスを使用したことがあります。プリコンパイル機能とは何ですか?それのメリットは何ですか? 2. MySQLはプリコンパイルを実行する MySQL は、次の 3 つのステップでプリコンパイルを実行します。 3. ステートメントを使用してプリコンパイルを実行する ステートメントを使用してプリコンパイルを実行すると、上記の SQL ステートメントが 1 回実行されます。 接続 con = JdbcUtils.getConnection(); ステートメント stmt = con.createStatement(); stmt.executeUpdate("'select * from t_book where bid=?' から myfun を準備します"); stmt.executeUpdate("@str='b1' を設定"); ResultSet rs = stmt.executeQuery("@str を使用して myfun を実行します"); while(rs.next()) { System.out.print(rs.getString(1) + ", "); System.out.print(rs.getString(2) + ", "); System.out.print(rs.getString(3) + ", "); System.out.println(rs.getString(4)); } stmt.executeUpdate("@str='b2' を設定"); rs = stmt.executeQuery("@str を使用して myfun を実行します"); while(rs.next()) { System.out.print(rs.getString(1) + ", "); System.out.print(rs.getString(2) + ", "); System.out.print(rs.getString(3) + ", "); System.out.println(rs.getString(4)); } rs.close(); stmt.close(); con.close(); 4. useServerPrepStmtsパラメータ デフォルトでは、PreparedStatementはプリコンパイルできません。URLにuseServerPrepStmts=trueパラメータを指定する必要があります(MySQL Server 4.1 より前のバージョンではプリコンパイルがサポートされておらず、5.0.5 以降の Connector/J バージョンではデフォルトでプリコンパイルが有効になっていません。 例: jdbc:mysql://localhost:3306/test?useServerPrepStmts=true 接続 con = JdbcUtils.getConnection(); 文字列 sql = "select * from t_book where bid=?"; 準備されたステートメント pstmt = con.prepareStatement(sql); pstmt.setString(1, "b1"); 結果セット rs = pstmt.executeQuery(); while(rs.next()) { System.out.print(rs.getString(1) + ", "); System.out.print(rs.getString(2) + ", "); System.out.print(rs.getString(3) + ", "); System.out.println(rs.getString(4)); } pstmt.setString(1, "b2"); rs = pstmt.executeQuery(); while(rs.next()) { System.out.print(rs.getString(1) + ", "); System.out.print(rs.getString(2) + ", "); System.out.print(rs.getString(3) + ", "); System.out.println(rs.getString(4)); } rs.close(); pstmt.close(); con.close(); 5. cachePrepStmtsパラメータ 異なる PreparedStatement オブジェクトを使用して同じ SQL ステートメントを実行すると、ステートメントは 2 回コンパイルされます。これは、ドライバーがコンパイルされた関数キーをキャッシュしないため、2 回目のコンパイルが発生するためです。コンパイルされた関数のキーをキャッシュする場合は、cachePrepStmts パラメータを true に設定します。例えば: 接続 con = JdbcUtils.getConnection(); 文字列 sql = "select * from t_book where bid=?"; 準備されたステートメント pstmt = con.prepareStatement(sql); pstmt.setString(1, "b1"); 結果セット rs = pstmt.executeQuery(); while(rs.next()) { System.out.print(rs.getString(1) + ", "); System.out.print(rs.getString(2) + ", "); System.out.print(rs.getString(3) + ", "); System.out.println(rs.getString(4)); } pstmt = con.prepareStatement(sql); pstmt.setString(1, "b2"); rs = pstmt.executeQuery(); while(rs.next()) { System.out.print(rs.getString(1) + ", "); System.out.print(rs.getString(2) + ", "); System.out.print(rs.getString(3) + ", "); System.out.println(rs.getString(4)); } rs.close(); pstmt.close(); con.close(); 6. バッチ処理をオンにする MySQL バッチ処理もパラメータで有効にする必要があります: rewriteBatchedStatements=true 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: CentOS での Docker の詳細なインストール チュートリアル
>>: CocosCreator で http と WebSocket を使用する方法
usemap は <img> タグの属性であり、使用するイメージ マップの名前を指定する...
VMware で仮想マシンを作成し、Redhat Linux オペレーティング システムをインスト...
問題を見つける今日は、vue ファイルにローカル画像を導入する際に問題が発生したので、この記事を書き...
便利なターミナル エミュレーターである Xshell は、開発者がホスト サーバーをリモート管理する...
◆お気に入りに追加例示するクリックすると、ブラウザのお気に入りメニューにウェブサイトが追加されます...
目次序文問題の説明原因分析拡大する総括する序文最近、データの欠落やデータの損失に関するフィードバック...
目次1. プロジェクト構築2: ディレクトリ構造3: コンポジションAPI 4: 基本的な使い方:最...
序文テーブルを削除するには、無意識に思い浮かぶコマンドは、DROP TABLE "テーブル...
序文インデックスを追加した場合と追加しなかった場合の違いを反映するには、数百万のデータを使用する必要...
tbody 要素は、thead 要素および tfoot 要素と組み合わせて使用する必要があります...
目次1- エラーの詳細2-シングルソリューション2.1-ディレクトリ C:\Windows\Syst...
成し遂げるこの効果は CSS を使用して完全に再現することは困難です。 CSS でシミュレートされた...
XHTML には似た機能を持つタグがいくつかあります。もちろん、ここでの類似性とは意味の類似性を指...
データを挿入するとき、以前オフィス システムに取り組んでいたときにはデータベースのパフォーマンスにつ...
この記事では、ドロップダウンテーブルの複数選択と検索を実現するためのvue+elementuiの具体...