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

SQLクエリは.NETアプリケーションでは低速ですが、SQL ServerManagementStudioでは瞬時に実行されます

    私の経験では、クエリがSSMSで高速に実行されるが、.NETからは低速になる通常の理由は、接続のSETの違いによるものです。 -tings。 SSMSまたはSqlConnectionのいずれかによって接続が開かれたとき 、一連のSET 実行環境を設定するためのコマンドが自動的に発行されます。残念ながら、SSMSとSqlConnection 異なるSET デフォルト。

    一般的な違いの1つは、SET ARITHABORTです。 。 SET ARITHABORT ONを発行してみてください .NETコードからの最初のコマンドとして。

    SQLプロファイラーを使用して、どのSETを監視できます。 コマンドはSSMSと.NETの両方で発行されるため、他の違いを見つけることができます。

    次のコードは、SETを発行する方法を示しています コマンドですが、このコードはテストされていないことに注意してください。

    using (SqlConnection conn = new SqlConnection("<CONNECTION_STRING>")) {
        conn.Open();
    
        using (SqlCommand comm = new SqlCommand("SET ARITHABORT ON", conn)) {
            comm.ExecuteNonQuery();
        }
    
        // Do your own stuff here but you must use the same connection object
        // The SET command applies to the connection. Any other connections will not
        // be affected, nor will any new connections opened. If you want this applied
        // to every connection, you must do it every time one is opened.
    }
    


    1. SQLServerランダムソート

    2. 「トリニダード・トバゴ」を使用したOracleSQLDeveloperでの変数置換を回避する方法

    3. データベース管理のためのACIDモデルを理解する

    4. SQLで保持率を計算する方法は?