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

Microsoft SQL Server2012のクエリがJDBC4.0で数分かかるのに、Management Studioでは1秒かかるのはなぜですか?

    アダプティブバッファリングは良い答えです。また、接続のSETを確認することをお勧めします SQLServerプロファイラーを介したオプション。

    トレースを開始するときは、ExistingConnectionsを確認してください が選択されています。 JDBC接続とSSMS接続のSPIDを比較します。 ARITHABORT 私が見たものとして、SSMSとJDBCドライバーのパフォーマンスに違いが生じることが思い浮かびます。 Microsoftは、ここで簡単に言及しています:http://msdn.microsoft.com/en-us/library/ms190306.aspx。ここにExchange情報をスタックします:https://dba.stackexchange.com/questions/9840/why-would-set-arithabort-on-dramatically-speed-up-a-query

    Oracleでは、setFetchSizeを試してみると大きな影響があります。 Statementのメソッド / PreparedStatement 物体。どうやら、SQLServerドライバーはそのメソッドをサポートしていません。ただし、そのドライバーには内部メソッドがあります。詳細については、「JDBCドライバーを使用したSQLServerでのデフォルトの行プリフェッチの設定」を参照してください。

    また、while (rs.next())で何をしていますか ループ? rs.getInt(1)のように列を読み取る以外に何もしないでください 。何が起こるか見てください。それが飛ぶ場合、それはボトルネックが結果セットの以前の処理にあることを示唆しています。それでも遅い場合は、問題はドライバーまたはデータベースにあるはずです。

    SQL Server Profilerを使用して、JDBCを介して実行された実行と、SSMSを介して実行された実行を比較できます。 CPU、読み取り、書き込み、および期間を比較します。それらが異なる場合は、実行プランがおそらく異なるため、最初に述べたSETに戻ります。 オプション。



    1. mysqlのダンプとインポートの高速化

    2. IRIWorkbenchでの新しいテーブルの作成

    3. MySQL – SELECT SLEEP()を使用して数秒待つ

    4. SQLで数値列の最大値を見つける方法