Запрос 1с: ВЫБРАТЬ первые 5 Товары.Ссылка ИЗ Справочник.Товары КАК Товары ГДЕ Товары.Ссылка В(&Ссылка) ========================== SQL exec sp_executesql N'SELECT TOP 5 T1._IDRRef FROM _Reference7 T1 WITH(NOLOCK) WHERE (T1._IDRRef IN (@P1, @P2, @P3))',N'@P1 varbinary(16),@P2 varbinary(16),@P3 varbinary(16)',0x8277080027E103B811E38F797495AF50,0xA779080027C5281D11E2DF19AD3B7527,0xA779080027C5281D11E2DF19AD3B74CD ========================== План Rows Executes StmtText StmtId NodeId Parent PhysicalOp LogicalOp Argument DefinedValues EstimateRows EstimateIO EstimateCPU AvgRowSize TotalSubtreeCost OutputList Warnings Type Parallel EstimateExecutions ---- -------- -------- ------ ------ ------ ---------- --------- -------- ------------- ------------ ---------- ----------- ---------- ---------------- ---------- -------- ---- -------- ------------------ 3 1 Top(TOP EXPRESSION:((5))) 0 0 Top Top TOP EXPRESSION:((5)) 3 0 3E-007 23 0,0032856 [T1].[_IDRRef] PLAN_ROW 0 1 3 1 |--Nested Loops(Inner Join, OUTER REFERENCES:([Expr1011], [Expr1012], [Expr1013])) 0 1 0 Nested Loops Inner Join OUTER REFERENCES:([Expr1011], [Expr1012], [Expr1013]) 3 0,003125 0,0001603 23 0,0032853 [T1].[_IDRRef] PLAN_ROW 0 1 3 1 |--Merge Interval 0 2 1 Merge Interval Merge Interval 3 0 0 33 0 [Expr1011], [Expr1012], [Expr1013] PLAN_ROW 0 1 3 1 | |--Sort(TOP 3, ORDER BY:([Expr1014] DESC, [Expr1015] ASC, [Expr1011] ASC, [Expr1016] DESC)) 0 3 2 Sort TopN Sort TOP 3, ORDER BY:([Expr1014] DESC, [Expr1015] ASC, [Expr1011] ASC, [Expr1016] DESC) 3 0 0 33 0 [Expr1011], [Expr1012], [Expr1013], [Expr1014], [Expr1015], [Expr1016] PLAN_ROW 0 1 0 0 | |--Compute Scalar(DEFINE:([Expr1014]=((4)&[Expr1013]) = (4) AND NULL = [Expr1011], [Expr1015]=(4)&[Expr1013], [Expr1016]=(16)&[Expr1013])) 0 4 3 Compute Scalar Compute Scalar DEFINE:([Expr1014]=((4)&[Expr1013]) = (4) AND NULL = [Expr1011], [Expr1015]=(4)&[Expr1013], [Expr1016]=(16)&[Expr1013]) [Expr1014]=((4)&[Expr1013]) = (4) AND NULL = [Expr1011], [Expr1015]=(4)&[Expr1013], [Expr1016]=(16)&[Expr1013] 3 0 0 33 0 [Expr1011], [Expr1012], [Expr1013], [Expr1014], [Expr1015], [Expr1016] PLAN_ROW 0 1 3 1 | |--Concatenation 0 5 4 Concatenation Concatenation [Expr1011] = ([Expr1003], [Expr1006], [Expr1009]), [Expr1012] = ([Expr1004], [Expr1007], [Expr1010]), [Expr1013] = ([Expr1002], [Expr1005], [Expr1008]) 3 0 0 33 0 [Expr1011], [Expr1012], [Expr1013] PLAN_ROW 0 1 0 0 | |--Compute Scalar(DEFINE:([Expr1003]=[@P3], [Expr1004]=[@P3], [Expr1002]=(62))) 0 6 5 Compute Scalar Compute Scalar DEFINE:([Expr1003]=[@P3], [Expr1004]=[@P3], [Expr1002]=(62)) [Expr1003]=[@P3], [Expr1004]=[@P3], [Expr1002]=(62) 1 0 0 33 0 [Expr1003], [Expr1004], [Expr1002] PLAN_ROW 0 1 1 1 | | |--Constant Scan 0 7 6 Constant Scan Constant Scan 1 0 0 0 0 PLAN_ROW 0 1 0 0 | |--Compute Scalar(DEFINE:([Expr1006]=[@P2], [Expr1007]=[@P2], [Expr1005]=(62))) 0 15 5 Compute Scalar Compute Scalar DEFINE:([Expr1006]=[@P2], [Expr1007]=[@P2], [Expr1005]=(62)) [Expr1006]=[@P2], [Expr1007]=[@P2], [Expr1005]=(62) 1 0 0 33 0 [Expr1006], [Expr1007], [Expr1005] PLAN_ROW 0 1 1 1 | | |--Constant Scan 0 16 15 Constant Scan Constant Scan 1 0 0 0 0 PLAN_ROW 0 1 0 0 | |--Compute Scalar(DEFINE:([Expr1009]=[@P1], [Expr1010]=[@P1], [Expr1008]=(62))) 0 24 5 Compute Scalar Compute Scalar DEFINE:([Expr1009]=[@P1], [Expr1010]=[@P1], [Expr1008]=(62)) [Expr1009]=[@P1], [Expr1010]=[@P1], [Expr1008]=(62) 1 0 0 33 0 [Expr1009], [Expr1010], [Expr1008] PLAN_ROW 0 1 1 1 | |--Constant Scan 0 25 24 Constant Scan Constant Scan 1 0 0 0 0 PLAN_ROW 0 1 3 3 |--Clustered Index Seek(OBJECT:([Uskorenie_1c].[dbo].[_Reference7].[PK___Referen__AC8ED0C4236943A5] AS [T1]), SEEK:([T1].[_IDRRef] > [Expr1011] AND [T1].[_IDRRef] < [Expr1012]) ORDERED FORWARD) 0 40 1 Clustered Index Seek Clustered Index Seek OBJECT:([Uskorenie_1c].[dbo].[_Reference7].[PK___Referen__AC8ED0C4236943A5] AS [T1]), SEEK:([T1].[_IDRRef] > [Expr1011] AND [T1].[_IDRRef] < [Expr1012]) ORDERED FORWARD [T1].[_IDRRef] 3 0,003125 0,0001603 23 0,0032853 [T1].[_IDRRef] PLAN_ROW 0 1 Андрей, правильно ли я его читаю... Выбираю товар по списку. Первым делом SQL определяет мои параметры и собирает их в список значений потом по перебору списка значений (Nested Loops) ищет в индексе каждое значение из полученного списка? Если да - то вопросы: Если он ищет в индексе по условию больше- меншье (, т.е. как и вслучае "или") то почему он ставит интервал между значениями Expr1011 и Expr1012, а не между Expr1011 и Expr1013 И не бедет ли условие "В" в запросах лучше заменить на "ОБЪЕДИНИТЬ ВСЕ" с условием "=" или система это делает автоматом?