Хранимая процедура:хранимой процедуры слишком много раз
CREATE PROCEDURE [dbo].[spManagedRouteSheetList]
@dStartDate DateTime,
@dEndDate DateTime
AS
BEGIN
SELECT IT.TriggerParentID,IT.ProductID, IT.[Weight],IT.[DateTime],IT.ProductType,IT.InOutType,IT.TriggerParentType FROM ITransaction IT
WHERE IT.InOutType=101 and IT.LotID in (select ManagedLotID from RSInQCDetail where YarnFormat <>4 and ManagedLotID>0)
AND IT.[DateTime]>[email protected] AND IT.[DateTime]<@dEndDate
--YarnCategory
SELECT YarnCategoryID,Name,Code FROM YarnCategory WHERE YarnCategoryID IN (SELECT Distinct ProductID FROm ITransaction IT WHERE IT.InOutType=101 and IT.LotID in (select ManagedLotID from RSInQCDetail where YarnFormat <>4 and ManagedLotID>0)
AND IT.[DateTime]>[email protected] AND IT.[DateTime]<@dEndDate)
--RouteSheet
SELECT RouteSheetID,RoutesheetNo, ReqYarnQty, [date],RSState,Shift,Subfactory,(SELECT Name FROM Location WHERE LocationID=Subfactory)
FROM Routesheet where RoutesheetID IN (SELECT distinct IT.TriggerParentID FROM ITransaction IT WHERE IT.InOutType=101 and IT.LotID in (select ManagedLotID from RSInQCDetail where YarnFormat <>4 and ManagedLotID>0)
AND IT.[DateTime]>[email protected] AND IT.[DateTime]<@dEndDate)
--RSInQCDetail
SELECT RouteSheetID,Qty,YarnFormat,ManagedLotID FROM RSInQCDetail WHERE RouteSheetID IN (SELECT distinct IT.TriggerParentID FROM ITransaction IT WHERE IT.InOutType=101 and IT.LotID in (select ManagedLotID from RSInQCDetail where YarnFormat <>4 and ManagedLotID>0)
AND IT.[DateTime]>[email protected] AND IT.[DateTime]<@dEndDate)
--RouteSheet History
SELECT RouteSheetID,YarnQtyInLBS,[Event] from RouteSheetHistoryEnhance WHERE EVENt IN (14)
AND RouteSheetID IN (SELECT distinct IT.TriggerParentID FROM ITransaction IT WHERE IT.InOutType=101 and IT.LotID in
(select ManagedLotID from RSInQCDetail where YarnFormat <>4 and ManagedLotID>0)
AND IT.[DateTime]>[email protected] AND IT.[DateTime]<@dEndDate)
END
Выполнение процедуры:
EXECUTE dbo.[spManagedRouteSheetList] '21 May 2012 08:00:00','22 May 2012 08:00:00'..
Это займет 2 СУИ, но если я выполнить следующий запрос он принимает только 1 или 3 секунды
DECLARE @dStartDate as datetime
,@dEndDate as datetime
SET @dStartDate='21 May 2012 08:00:00'
SET @dEndDate='22 May 2012 08:00:00'
SELECT IT.TriggerParentID,IT.ProductID, IT.[Weight],IT.[DateTime],IT.ProductType,IT.InOutType,IT.TriggerParentType FROM ITransaction IT
WHERE IT.InOutType=101 and IT.LotID in (select ManagedLotID from RSInQCDetail where YarnFormat <>4 and ManagedLotID>0)
AND IT.[DateTime]>[email protected] AND IT.[DateTime]<@dEndDate
--YarnCategory
SELECT YarnCategoryID,Name,Code FROM YarnCategory WHERE YarnCategoryID IN (SELECT Distinct ProductID FROm ITransaction IT WHERE IT.InOutType=101 and IT.LotID in (select ManagedLotID from RSInQCDetail where YarnFormat <>4 and ManagedLotID>0)
AND IT.[DateTime]>[email protected] AND IT.[DateTime]<@dEndDate)
--RouteSheet
SELECT RouteSheetID,RoutesheetNo, ReqYarnQty, [date],RSState,Shift,Subfactory,(SELECT Name FROM Location WHERE LocationID=Subfactory)
FROM Routesheet where RoutesheetID IN (SELECT distinct IT.TriggerParentID FROM ITransaction IT WHERE IT.InOutType=101 and IT.LotID in (select ManagedLotID from RSInQCDetail where YarnFormat <>4 and ManagedLotID>0)
AND IT.[DateTime]>[email protected] AND IT.[DateTime]<@dEndDate)
--RSInQCDetail
SELECT RouteSheetID,Qty,YarnFormat,ManagedLotID FROM RSInQCDetail WHERE RouteSheetID IN (SELECT distinct IT.TriggerParentID FROM ITransaction IT WHERE IT.InOutType=101 and IT.LotID in (select ManagedLotID from RSInQCDetail where YarnFormat <>4 and ManagedLotID>0)
AND IT.[DateTime]>[email protected] AND IT.[DateTime]<@dEndDate)
--RouteSheet History
SELECT RouteSheetID,YarnQtyInLBS,[Event] from RouteSheetHistoryEnhance WHERE EVENt IN (14)
AND RouteSheetID IN (SELECT distinct IT.TriggerParentID FROM ITransaction IT WHERE IT.InOutType=101 and IT.LotID in ``
(select ManagedLotID from RSInQCDetail where YarnFormat <>4 and ManagedLotID>0)
AND IT.[DateTime]>[email protected] AND IT.[DateTime]<@dEndDate)
Итак, в чем проблема с хранимой процедурой?
Что говорит план выполнения? – sharptooth
Для какой базы данных? (postgres, mysql и т. д. - добавьте соответствующий тег) – Bohemian
Параметр sniffing? Взгляни на; http://www.sommarskog.se/query-plan-mysteries.html –