我有帳單應用程序,它具有一些報告生成功能。運行6-7個月後,我面臨有線問題。我的sql語句在管理工作室編輯器中完美運行(4秒執行),但是當我將相同的查詢放到SP時,需要(1分9秒執行相同的查詢)。表有150K行。下面是我在SP中使用的查詢。我的應用程序顯示超時過期異常消息。我嘗試將連接字符串中的超時設置爲180秒。 (對於臨時解決方案),但沒有正面結果。存儲過程性能問題
ALTER PROCEDURE [dbo].[rpt_GetShiftEndReport](
@BillDate varchar(10),
@JobShift int,
@MonthStartDate varchar(10),
@MonthEndDate varchar(10)
)
AS
--begin tran
SET NOCOUNT ON;
SELECT Products.pCode AS ProductCode, MIN(Products.pName) AS ProductName, MIN(Products.pSize) AS ItemSize, MIN(I.gName) AS GroupName, Sales_Trans.Price,
SUM(Sales_Trans.Sales_Qty) AS SalesQty, SUM(Sales_Trans.Sales_Value) AS SalesValue, SUM(Sales_Trans.Break_Qty) AS BreakQty,
SUM(Sales_Trans.Break_Value) AS BreakValue, SUM(Sales_Trans.Return_Qty) AS ReturnQty, SUM(Sales_Trans.Return_Value) AS ReturnValue,
MIN(Products.CloseStock) AS Stock, MIN(Products.pGroup) AS GroupCode,
dbo.GetCummulativeSales(@MonthStartDate, @MonthEndDate, Products.pCode) AS CummSales
FROM Products INNER JOIN
(SELECT SalesLog_1.ProductCode, SalesLog_1.Price, SalesLog_1.Quantity AS Sales_Qty, SalesLog_1.Price * SalesLog_1.Quantity AS Sales_Value,
0 AS Break_Qty, 0 AS Break_Value, 0 AS Return_Qty, 0 AS Return_Value
FROM SalesLog AS SalesLog_1 INNER JOIN
Sales ON SalesLog_1.MemoNo = Sales.MemoNo
WHERE (SalesLog_1.BillDate = @BillDate) AND (Sales.JobShift = @JobShift)
UNION ALL
SELECT ProductCode, Price, 0 AS Sales_Qty, 0 AS Sales_Value, 0 AS Break_Qty, 0 AS Break_Value, Quantity AS Return_Qty,
Price * Quantity AS Return_Value
FROM SalesReturn
WHERE (BillDate = @BillDate) AND (JobShift = @JobShift)
UNION ALL
SELECT ProductCode, Price, 0 AS Sales_Qty, 0 AS Sales_Value, Quantity AS Break_Qty, Price * Quantity AS Break_Value, 0 AS Return_Qty,
0 AS Return_Value
FROM Breakages
WHERE (BillDate = @BillDate) AND (JobShift = @JobShift)) AS Sales_Trans ON Products.pCode = Sales_Trans.ProductCode INNER JOIN
ItemGroup AS I ON I.gCode = Products.pGroup
GROUP BY Products.pCode, Sales_Trans.Price
ORDER BY GroupCode, ItemSize DESC;
任何人都可以建議我現在該做什麼。我不認爲它的查詢問題可能不會。的行。
您確定您在SP中的參數與查詢中的參數值相同(當您不使用SP時)嗎? – 2011-03-19 17:57:43
是的,我從SP複製了值到查詢 – 2011-03-19 17:59:58
抱歉,聲音嘮叨......但是,有3個varchar(日期)參數。你有沒有確保你爲每個值傳遞了合適的(和期望的)值,並且當你使用SP時,這些參數之間的值沒有得到交換?對不起,只是檢查.. – 2011-03-19 18:03:41