Показать сообщение отдельно
Старый 20.09.2007, 13:42   #7  
VitaliyK is offline
VitaliyK
Участник
 
8 / 11 (1) +
Регистрация: 14.09.2007
Адрес: СПб
Цитата:
Сообщение от mazzy Посмотреть сообщение
А можете план в обоих случаях показать?
конечно, вот план с cyrillic (заменил квадратные скобки на фигурные и заменил кое-где двоеточия на дефисы, т.к. иначе форум не дает отправить сообщение - говорит слишком много картинок)
Цитата:
|--Stream Aggregate(GROUP BY-({A}.{ITEMID}))
|--Nested Loops(Inner Join, OUTER REFERENCES-({B}.{INVENTDIMID}, {Expr1007}) WITH ORDERED PREFETCH)
|--Nested Loops(Inner Join, OUTER REFERENCES-({A}.{ITEMID}, {Expr1006}) WITH ORDERED PREFETCH)
| |--Clustered Index Seek(OBJECT-({db_cyr}.{dbo}.{INVENTTABLE}.{I_175ITEMIDX} AS {A}), SEEK-({A}.{DATAAREAID}={@0}), WHERE-({db_cyr}.{dbo}.{INVENTTABLE}.{A_LINECODE} as {A}.{A_LINECODE}={@1}) ORDERED FORWARD)
| |--Clustered Index Seek(OBJECT-({db_cyr}.{dbo}.{INVENTSUM}.{I_174ITEMDIMIDX} AS {B}), SEEK-({B}.{DATAAREAID}={@2} AND {B}.{ITEMID}={db_cyr}.{dbo}.{INVENTTABLE}.{ITEMID} as {A}.{ITEMID}), WHERE-({db_cyr}.{dbo}.{INVENTSUM}.{CLOSED} as {B}.{CLOSED}={@3} AND {db_cyr}.{dbo}.{INVENTSUM}.{CLOSEDQTY} as {B}.{CLOSEDQTY}={@4}) ORDERED FORWARD)
|--Clustered Index Seek(OBJECT-({db_cyr}.{dbo}.{INVENTDIM}.{I_698DIMIDIDX} AS {C}), SEEK-({C}.{DATAAREAID}={@5} AND {C}.{INVENTDIMID}={db_cyr}.{dbo}.{INVENTSUM}.{INVENTDIMID} as {B}.{INVENTDIMID}), WHERE-({db_cyr}.{dbo}.{INVENTDIM}.{INVENTPROJECTID} as {C}.{INVENTPROJECTID}={@6}) ORDERED FORWARD)
а вот с 1251, который должен быть медленнее, но почему-то быстрее

Цитата:
|--Compute Scalar(DEFINE-({Expr1006}=tertiary_weights({db_1251}.{dbo}.{INVENTTABLE}.{ITEMID} as {A}.{ITEMID})))
|--Stream Aggregate(GROUP BY-({A}.{ITEMID}))
|--Nested Loops(Inner Join, OUTER REFERENCES-({B}.{INVENTDIMID}, {Expr1008}) WITH ORDERED PREFETCH)
|--Nested Loops(Inner Join, OUTER REFERENCES-({A}.{ITEMID}, {Expr1007}) WITH ORDERED PREFETCH)
| |--Clustered Index Seek(OBJECT-({db_1251}.{dbo}.{INVENTTABLE}.{I_175ITEMIDX} AS {A}), SEEK-({A}.{DATAAREAID}={@0}), WHERE-({db_1251}.{dbo}.{INVENTTABLE}.{A_LINECODE} as {A}.{A_LINECODE}={@1}) ORDERED FORWARD)
| |--Clustered Index Seek(OBJECT-({db_1251}.{dbo}.{INVENTSUM}.{I_174ITEMDIMIDX} AS {B}), SEEK-({B}.{DATAAREAID}={@2} AND {B}.{ITEMID}={db_1251}.{dbo}.{INVENTTABLE}.{ITEMID} as {A}.{ITEMID}), WHERE-({db_1251}.{dbo}.{INVENTSUM}.{CLOSED} as {B}.{CLOSED}={@3} AND {db_1251}.{dbo}.{INVENTSUM}.{CLOSEDQTY} as {B}.{CLOSEDQTY}={@4}) ORDERED FORWARD)
|--Clustered Index Seek(OBJECT-({db_1251}.{dbo}.{INVENTDIM}.{I_698DIMIDIDX} AS {C}), SEEK-({C}.{DATAAREAID}={@5} AND {C}.{INVENTDIMID}={db_1251}.{dbo}.{INVENTSUM}.{INVENTDIMID} as {B}.{INVENTDIMID}), WHERE-({db_1251}.{dbo}.{INVENTDIM}.{INVENTPROJECTID} as {C}.{INVENTPROJECTID}={@6}) ORDERED FORWARD)
PS: на счет обновления статистики и пр. - перед экспериментами выполнялся sp_createstat, sp_updatestat и на всех таблицах делался REBUILD ALL INDEX с одними и теми же параметрами
Время выполнения определял двумя способами
либо селектами вида
Цитата:
declare @d datetime
set @d =getdate()

select ...
from ...

select db_name(),getdate(), @d, datediff(ms,@d,getdate())
при выключенном вычислении actual-плана
либо включением

SET STATISTICS TIME ON
(давала почти идентичные результаты, что и select db_name(),getdate(), @d, datediff(ms,@d,getdate())

PPS: я тоже был уверен, что скорость должна возрасти, особенно когда первая проверка показала рост скорости в 1000 раз, но вот усредненная реальность подставила подножку... Да и сейчас надеюсь еще найти "волшебный переключатель"

Последний раз редактировалось VitaliyK; 20.09.2007 в 13:49.