2016-09-11 12 views
0

を実行します:機能は、私は、ストアドプロシージャでこのクエリを持っている私のクエリは非常にゆっくりと

SELECT  
    *, 
    ISNULL(dbo.ReturnShortageByItemCodeLinePackage(LineId, TestPackageId, MaterialDescriptionId), 0) AS Shortage 
FROM 
    dbo.ViewMTO 

私はあなたがここに見ることができるように、整数値を計算するために、クエリ内の機能を使用しています:

ALTER FUNCTION [dbo].[ReturnShortageByItemCodeLinePackage] 
    (@lineId int,@testpackId int, @MaterialDescriptionId int) 
RETURNS float 
AS 
BEGIN 
    DECLARE @shortageQuantity float 
    DECLARE @MIVQuantity float 
    DECLARE @totalQuantity float 
    DECLARE @spoolQuantity float 
    DECLARE @ExistInSiteQuantity float 
    DECLARE @BeforeDoneQuantity float 

    SELECT 
     @totalQuantity = Quantity, 
     @spoolQuantity = QuantitySpool, 
     @ExistInSiteQuantity = QuantityExistInSite, 
     @BeforeDoneQuantity = QuantityBeforeDone 
    FROM 
     [SPMS2].[dbo].Materials 
    WHERE 
     LineId = @lineId 
     AND TestPackageId = @testpackId 
     AND MaterialDescriptionId = @MaterialDescriptionId 

    SELECT 
     @MIVQuantity = SUM(QuantityDeliver) 
    FROM 
     MaterialIssueVoucherDetails miv 
    JOIN 
     MaterialRequestContractorDetails mrc ON miv.MaterialRequestContractorDetailId = mrc.Id 
    WHERE 
     TestPackageId = @testpackId 
     AND LineId = @lineId 
     AND miv.MaterialDescriptionId = @MaterialDescriptionId 

    IF @MIVQuantity IS NULL 
    BEGIN 
     SET @MIVQuantity = 0  
    END 

    SET @shortageQuantity = @totalQuantity - (@BeforeDoneQuantity + @ExistInSiteQuantity + @spoolQuantity + @MIVQuantity) 

    RETURN round(@shortageQuantity, 3) 
END 

私のクエリは3分で実行されますが、それは私のユーザーにとって致命的です!もっと良い解決策はありますか?

+0

ViewMTOはビューですか? – scsimon

答えて

1

私は3つのことをお勧めすることができます:

A.を次の行...

SELECT @totalQuantity= ... 
FROM [SPMS2].[dbo].Materials 

は、リンクサーバー接続を介して別のデータベースにアクセスして、このですか?この接続はどのくらいの速さですか?

B.あなたのSPには、2つの SELECT文が含まれています。どちらがボトルネックですか? それぞれが開始されたときは、表示するために、いくつかのPRINT文を追加することができます。

PRINT convert(nvarchar, GetDate(), 108) + ' This is the time !' 

C.が不足しているインデックスをハイライト表示されます以下の私のWebページ上のSQLショーを実行してみてください。

Find missing indexes

は、この情報がお役に立てば幸いです。

+0

ありがとうございますが、spms2は私の現在のdbの名前です –

+0

さて...私の3つの提案のうち1つに答えました...そしてもう2つは...? –

関連する問題