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

DotNetからのストアドプロシージャの実行には非常に時間がかかりますが、SSMSではすぐに実行できます

    私のコメントは正しい答えを提供しているようだったので、スタックオーバーフローの精神で後世のために完全な答えに移動することにしました。

    問題の原因は、SQLServerのパラメータスニッフィングが原因のようです。 。これを防ぐには、SPの上部で宣言されている他の変数に着信パラメータ値を割り当てるだけです。

    それについてのこの素晴らしい記事を参照してください

    例:

    CREATE PROCEDURE dbo.MyProcedure
    (
        @Param1 INT
    )
    AS
    
    declare @MyParam1 INT
    set @MyParam1 = @Param1
    
    SELECT * FROM dbo.MyTable WHERE ColumnName = @MyParam1 
    
    GO
    

    この情報を eggheadcafe.com 。

    編集:Johann Strydomのコメントによると、別のオプションがあります: SQL Server OPTIMIZEFORHintを使用してパラメータ駆動型クエリを最適化する



    1. SQL Server 2008-存在しない場合は、ELSEUPDATEを挿入します

    2. クロス結合を使用することと、2つのテーブルの間にコンマを入れることの違いは何ですか?

    3. postgresql 8.2のネストされたトランザクション?

    4. mysqlはn個の最後の行から選択します