stimpi,
SET SHOWPLAN_TEXT ON
SET NOCOUNT ON;
DECLARE @NLS CHAR(13)
DECLARE @ACDATE DATETIME
SELECT @NLS = MIN(NLS) FROM ARAS
WHILE @NLS IS NOT NULL BEGIN
SELECT @ACDATE = MIN(ACDATE) FROM ARAS WHERE NLS = @NLS
WHILE @ACDATE IS NOT NULL BEGIN
SELECT @ACDATE = MIN(ACDATE) FROM ARAS WHERE NLS = @NLS AND ACDATE > @ACDATE
END
SELECT @NLS = MIN(NLS) FROM ARAS WHERE NLS > @NLS
END
DECLARE @NLS CHAR(13) DECLARE @ACDATE DATETIME SELECT @NLS = MIN(NLS) FROM ARAS(NOLOCK)
|--Compute Scalar(DEFINE:([Expr1004]=CONVERT_IMPLICIT(char(13),[Expr1003],0)))
|--Stream Aggregate(DEFINE:([Expr1003]=MIN([Kvplata].[dbo].[Aras].[NLS])))
|--Top(TOP EXPRESSION:((1)))
|--Index Scan(OBJECT:([Kvplata].[dbo].[Aras].[Nls]), ORDERED FORWARD)
WHILE @NLS IS NOT NULL
BEGIN SELECT @ACDATE = MIN(ACDATE) FROM ARAS(NOLOCK) WHERE NLS = @NLS
|--Compute Scalar(DEFINE:([Expr1004]=CONVERT_IMPLICIT(datetime,[Expr1003],0)))
|--Stream Aggregate(DEFINE:([Expr1003]=MIN([Kvplata].[dbo].[Aras].[ACDATE])))
|--Top(TOP EXPRESSION:((1)))
|--Index Seek(OBJECT:([Kvplata].[dbo].[Aras].[Nls]), SEEK:([Kvplata].[dbo].[Aras].[NLS]=CONVERT_IMPLICIT(nchar(13),[@NLS],0)) ORDERED BACKWARD)
WHILE @ACDATE IS NOT NULL
BEGIN SELECT @ACDATE = MIN(ACDATE) FROM ARAS(NOLOCK) WHERE NLS = @NLS AND ACDATE > @ACDATE
|--Compute Scalar(DEFINE:([Expr1004]=CONVERT_IMPLICIT(datetime,[Expr1003],0)))
|--Stream Aggregate(DEFINE:([Expr1003]=MIN([Kvplata].[dbo].[Aras].[ACDATE])))
|--Top(TOP EXPRESSION:((1)))
|--Nested Loops(Inner Join, OUTER REFERENCES:([Expr1008], [Expr1009], [Expr1007]))
|--Compute Scalar(DEFINE:(([Expr1008],[Expr1009],[Expr1007])=GetRangeWithMismatchedTypes([@ACDATE],NULL,(6))))
| |--Constant Scan
|--Index Seek(OBJECT:([Kvplata].[dbo].[Aras].[Nls]), SEEK:([Kvplata].[dbo].[Aras].[NLS]=CONVERT_IMPLICIT(nchar(13),[@NLS],0) AND [Kvplata].[dbo].[Aras].[ACDATE] < [Expr1009] AND [Kvplata].[dbo].[Aras].[ACDATE] > [Expr1008])
END SELECT @NLS = MIN(NLS) FROM ARAS(NOLOCK) WHERE NLS > @NLS
|--Compute Scalar(DEFINE:([Expr1004]=CONVERT_IMPLICIT(char(13),[Expr1003],0)))
|--Stream Aggregate(DEFINE:([Expr1003]=MIN([Kvplata].[dbo].[Aras].[NLS])))
|--Top(TOP EXPRESSION:((1)))
|--Index Seek(OBJECT:([Kvplata].[dbo].[Aras].[Nls]), SEEK:([Kvplata].[dbo].[Aras].[NLS] > CONVERT_IMPLICIT(nchar(13),[@NLS],0)) ORDERED FORWARD)
END
Со всеми постами о дурном мышлении согласен на все сто! Это пробный код, никаких задач не решающий, просто неприятно поразивший временем выполнения...