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

SQL Server:クエリは高速ですが、手順からは低速です

    私は元のポスターと同じ問題を抱えていましたが、引用された答えは私にとって問題を解決しませんでした。クエリは、ストアドプロシージャからはまだ非常に遅く実行されました。

    ここで別の答えを見つけました「パラメータスニッフィング」、Omnibuzzに感謝します。要約すると、ストアドプロシージャクエリで「ローカル変数」を使用することになりますが、理解を深めるために元の変数を読んでください。これはすばらしい記述です。例:

    遅い方法:

    CREATE PROCEDURE GetOrderForCustomers(@CustID varchar(20))
    AS
    BEGIN
        SELECT * 
        FROM orders
        WHERE customerid = @CustID
    END
    

    迅速な方法:

    CREATE PROCEDURE GetOrderForCustomersWithoutPS(@CustID varchar(20))
    AS
    BEGIN
        DECLARE @LocCustID varchar(20)
        SET @LocCustID = @CustID
    
        SELECT * 
        FROM orders
        WHERE customerid = @LocCustID
    END
    

    これが他の誰かに役立つことを願っています。これにより、実行時間が5分以上から約6〜7秒に短縮されました。



    1. PostgreSQLを使用した英数字の並べ替え

    2. MySQL InnoDB Cluster 8.0-完全なデプロイメントウォークスルー:パート1

    3. SQL Server SP-IN配列リストのパラメーターを渡しますか?

    4. OracleのCHARTOROWID()関数