Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Заставить работать индекс  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
Есть некий запрос. Выполняется 2 минуты.
Запрос примитивный
Select <список полей>
from table
where objID = 20


по objID (это не PK) постороен индекс.
Дальше делаю так

Select <список полей>
from table WITH (INDEX(IX_table_ObjID))
where objID = 20


Запрос выполняется 15 секунд
два вопроса
1. Почему оптимизатор сам не видит индекса
2. Можно ли заставить его видеть индекс без инструкции WITH

Записей в таблице более 5млн.
4 май 12, 10:36    [12506081]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
Добавление: Индекс построен уже после того, как таблица наполнилась данными, а не на этапе проектирования
4 май 12, 10:39    [12506097]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Каков % от общего числа записей удовлетворяет фильтру ?
Возможно он слишком велик, чтобы был смысл использовать индекс.
4 май 12, 10:42    [12506116]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
Как давно обновляли статистику для этой таблицы?
4 май 12, 10:43    [12506120]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
и тексты запросов точно такие? или используются преобразования, параметры и т.д.
ну и вопрос выше?
4 май 12, 10:43    [12506125]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
LSV,

Не делая запросов могу точно сказать, что в базе 100 объектов и распределения записей по ним примерно одинаковое
А как посмотреть селективность, напомните плз

>Возможно он слишком велик, чтобы был смысл использовать индекс.

Смысл есть, я же это в явном виде вижу 15 секунд против 2-х минут
4 май 12, 10:45    [12506132]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
invm
Как давно обновляли статистику для этой таблицы?

да вроде индекст создали, как таблицу наполнили данными, так что статистика должна быть актуальна, хотя может у него все потом поменялось.
4 май 12, 10:45    [12506134]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
покажи результат DBCC SHOW_STATISTICS ('table','IX_table_ObjID')
4 май 12, 10:46    [12506143]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
Вообще довольно странно, что запрос из одной таблицы с одним условием в where "не видит" индекса по полю, используемому в where.

Попробуйте статистику обновить по таблице.
4 май 12, 10:47    [12506148]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
invm
Как давно обновляли статистику для этой таблицы?


Никогда. Кстати с трудом представляю, как такое организовать. Как это делается, в случае если программ с базой отдается клиентам у которых может не быть вменяемого админа. Из программы? Или в базе с периодичностью какой-то настраивается?
4 май 12, 10:48    [12506156]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
minva
invm
Как давно обновляли статистику для этой таблицы?


Никогда. Кстати с трудом представляю, как такое организовать. Как это делается, в случае если программ с базой отдается клиентам у которых может не быть вменяемого админа. Из программы? Или в базе с периодичностью какой-то настраивается?

можешь джоб содать чтобы он автоматом по ночам делал с нужной тебе периодичностью
4 май 12, 10:49    [12506168]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
Мистер Хенки
покажи результат DBCC SHOW_STATISTICS ('table','IX_table_ObjID')


RANGE_HI_KEYRANGE_ROWSEQ_ROWSDISTINCT_RANGE_ROWSAVG_RANGE_ROWS
5030202401
6016450501
8026760201
906250301
11040602501
1208783201
19022788301
20085905601
21028319101
22023837901
23044196201
26042148001
27067967201
30036561601
34011769801
360135614301
38024127301
39034783301
40010282001
4404563901
46087420001
4706544501
510265437801

.....
ну и далее примерно так же

Сообщение было отредактировано: 4 май 12, 10:58
4 май 12, 10:57    [12506239]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
а записей сколько в таблице?
4 май 12, 11:03    [12506293]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
Мистер Хенки
а записей сколько в таблице?


45766651
4 май 12, 11:07    [12506329]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
если для значения 20 имеется 859056 записей 859056/5000000=0.17 и вообще говоря это не очень селективное условие. Оптимизатор может выбрать сканирование таблицы вместо поиска по ключу тем более не кластерному. Это опираясь на статистику - а сервер только на нее и опирается при выборе решения. Если ваша статистика неверна(селективность выше), то и оптимизатор выбирает неправильное решение. Можно попробовать обновить статистику update statistics и посмотреть что выберет оптимизатор
4 май 12, 11:11    [12506357]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
Мистер Хенки,

Обновил.. Изменилось время запроса без индекса - минута 40 секунд.
С явным указанием индекса всё равно быстрей - те же 15 секунд
4 май 12, 11:18    [12506398]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
А вообще эта практика, когда индекс явно указывается - нормальная практика?
Или как GOTO - инструкция есть, но лучше не юзать?
4 май 12, 11:21    [12506418]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
minva
Мистер Хенки,

Обновил.. Изменилось время запроса без индекса - минута 40 секунд.
С явным указанием индекса всё равно быстрей - те же 15 секунд

тогда выкладывай настоящий запрос и два плана с хинтом на индекс и без
4 май 12, 11:21    [12506424]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
minva
А вообще эта практика, когда индекс явно указывается - нормальная практика?
Или как GOTO - инструкция есть, но лучше не юзать?

Ну указывать можно конечно, просто вдруг кто то удалит индекс. Или запрос перепишет так что использование именно этого индекса будет не очень хорошим решением
4 май 12, 11:27    [12506473]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
Мистер Хенки,

поолный запрос

Select 
  was_at as DateTime, quantity,  price as retPrice, Payment_ID,       
 '' as RelayOrder, 0 as code, Ware_Code as WareCode, price as costByDoc,
  0 as discount, 0 AS difference, -1 as rid 
  from single_ware_sells WITH (INDEX(IX_Single_Ware_sell_ObjID))
  where object_ID = 20 
 order by Ware_Code, was_at


Тут обнаружил еще такое сообщение:
/*
Отсутствуют сведения об индексе из SQLQuery2.sql - COMPMINVA.afsmut (COMPMINVA\minva (54))
Обработчик запросов считает, что реализация следующего индекса может сократить стоимость запроса на 96.5991%.
*/

/*
USE [afsmut]
GO
CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [dbo].[single_ware_sells] ([object_id])
INCLUDE ([ware_code],[was_at],[payment_id],[quantity],[price])
GO
*/


Это вообще что???

А как сюда выложить план запроса, раньше вроде можжно было в текст скопировать, теперь что-то не нахожу
4 май 12, 11:31    [12506513]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
minva
Мистер Хенки,

поолный запрос

Select 
  was_at as DateTime, quantity,  price as retPrice, Payment_ID,       
 '' as RelayOrder, 0 as code, Ware_Code as WareCode, price as costByDoc,
  0 as discount, 0 AS difference, -1 as rid 
  from single_ware_sells WITH (INDEX(IX_Single_Ware_sell_ObjID))
  where object_ID = 20 
 order by Ware_Code, was_at


Тут обнаружил еще такое сообщение:
/*
Отсутствуют сведения об индексе из SQLQuery2.sql - COMPMINVA.afsmut (COMPMINVA\minva (54))
Обработчик запросов считает, что реализация следующего индекса может сократить стоимость запроса на 96.5991%.
*/

/*
USE [afsmut]
GO
CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [dbo].[single_ware_sells] ([object_id])
INCLUDE ([ware_code],[was_at],[payment_id],[quantity],[price])
GO
*/


Это вообще что???

А как сюда выложить план запроса, раньше вроде можжно было в текст скопировать, теперь что-то не нахожу


1)как выложить план запроса в текстовом виде тынц
2)
USE [afsmut]
GO
CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [dbo].[single_ware_sells] ([object_id])
INCLUDE ([ware_code],[was_at],[payment_id],[quantity],[price])
GO

Неплохая подсказка впринципе. При использовании этого индекса не надо будет делать лишнюю операцию (key lookup) можешь попробовать удалить старый и создать вот такой новый.
4 май 12, 11:40    [12506568]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
Мистер Хенки,

Это с индексом

RowsExecutesStmtTextStmtIdNodeIdParentPhysicalOpLogicalOpArgumentDefinedValuesEstimateRowsEstimateIOEstimateCPUAvgRowSizeTotalSubtreeCostOutputListWarningsTypeParallelEstimateExecutions
8590561Select was_at as DateTime, quantity, price as retPrice, Payment_ID, '' as RelayOrder, 0 as code, Ware_Code as WareCode, price as costByDoc, 0 as discount, 0 AS difference, -1 as rid from single_ware_sells WITH (INDEX(IX_Single_Ware_sell_ObjID)) where (object_ID = 20) --and Was_At <= '20120131 23:59:59.999' and Was_At > '20120101 00:00:00.000' order by Ware_Code, was_at110NULLNULLNULLNULL831930,2NULLNULLNULL1359,347NULLNULLSELECT0NULL
00 |--Compute Scalar(DEFINE:([Expr1003]='', [Expr1004]=(0), [Expr1005]=(0), [Expr1006]=(0), [Expr1007]=(-1)))121Compute ScalarCompute ScalarDEFINE:([Expr1003]='', [Expr1004]=(0), [Expr1005]=(0), [Expr1006]=(0), [Expr1007]=(-1))[Expr1003]='', [Expr1004]=(0), [Expr1005]=(0), [Expr1006]=(0), [Expr1007]=(-1)831930,200,08319302601359,347[afsmut].[dbo].[single_ware_sells].[ware_code], [afsmut].[dbo].[single_ware_sells].[was_at], [afsmut].[dbo].[single_ware_sells].[payment_id], [afsmut].[dbo].[single_ware_sells].[quantity], [afsmut].[dbo].[single_ware_sells].[price], [Expr1003], [Expr1004], [Expr1005], [Expr1006], [Expr1007]NULLPLAN_ROW01
8590561 |--Parallelism(Gather Streams, ORDER BY:([afsmut].[dbo].[single_ware_sells].[ware_code] ASC, [afsmut].[dbo].[single_ware_sells].[was_at] ASC))132ParallelismGather StreamsORDER BY:([afsmut].[dbo].[single_ware_sells].[ware_code] ASC, [afsmut].[dbo].[single_ware_sells].[was_at] ASC)NULL831930,206,57475391359,264[afsmut].[dbo].[single_ware_sells].[ware_code], [afsmut].[dbo].[single_ware_sells].[was_at], [afsmut].[dbo].[single_ware_sells].[payment_id], [afsmut].[dbo].[single_ware_sells].[quantity], [afsmut].[dbo].[single_ware_sells].[price]NULLPLAN_ROW11
8590564 |--Sort(ORDER BY:([afsmut].[dbo].[single_ware_sells].[ware_code] ASC, [afsmut].[dbo].[single_ware_sells].[was_at] ASC))143SortSortORDER BY:([afsmut].[dbo].[single_ware_sells].[ware_code] ASC, [afsmut].[dbo].[single_ware_sells].[was_at] ASC)NULL831930,20,00563063137,54814391352,689[afsmut].[dbo].[single_ware_sells].[ware_code], [afsmut].[dbo].[single_ware_sells].[was_at], [afsmut].[dbo].[single_ware_sells].[payment_id], [afsmut].[dbo].[single_ware_sells].[quantity], [afsmut].[dbo].[single_ware_sells].[price]NULLPLAN_ROW11
8590564 |--Nested Loops(Inner Join, OUTER REFERENCES:([afsmut].[dbo].[single_ware_sells].[rec_id], [Expr1008]) WITH UNORDERED PREFETCH)154Nested LoopsInner JoinOUTER REFERENCES:([afsmut].[dbo].[single_ware_sells].[rec_id], [Expr1008]) WITH UNORDERED PREFETCHNULL831930,201,738734391315,135[afsmut].[dbo].[single_ware_sells].[ware_code], [afsmut].[dbo].[single_ware_sells].[was_at], [afsmut].[dbo].[single_ware_sells].[payment_id], [afsmut].[dbo].[single_ware_sells].[quantity], [afsmut].[dbo].[single_ware_sells].[price]NULLPLAN_ROW11
8590564 |--Index Seek(OBJECT:([afsmut].[dbo].[single_ware_sells].[IX_Single_Ware_sell_ObjID]), SEEK:([afsmut].[dbo].[single_ware_sells].[object_id]=(20)) ORDERED FORWARD)175Index SeekIndex SeekOBJECT:([afsmut].[dbo].[single_ware_sells].[IX_Single_Ware_sell_ObjID]), SEEK:([afsmut].[dbo].[single_ware_sells].[object_id]=(20)) ORDERED FORWARD, FORCEDINDEX[afsmut].[dbo].[single_ware_sells].[rec_id]831930,20,83968720,4576401111,297327[afsmut].[dbo].[single_ware_sells].[rec_id]NULLPLAN_ROW11
859056859056 |--Clustered Index Seek(OBJECT:([afsmut].[dbo].[single_ware_sells].[PK_SingleWareSells]), SEEK:([afsmut].[dbo].[single_ware_sells].[rec_id]=[afsmut].[dbo].[single_ware_sells].[rec_id]) LOOKUP ORDERED FORWARD)195Clustered Index SeekClustered Index SeekOBJECT:([afsmut].[dbo].[single_ware_sells].[PK_SingleWareSells]), SEEK:([afsmut].[dbo].[single_ware_sells].[rec_id]=[afsmut].[dbo].[single_ware_sells].[rec_id]) LOOKUP ORDERED FORWARD, FORCEDINDEX[afsmut].[dbo].[single_ware_sells].[ware_code], [afsmut].[dbo].[single_ware_sells].[was_at], [afsmut].[dbo].[single_ware_sells].[payment_id], [afsmut].[dbo].[single_ware_sells].[quantity], [afsmut].[dbo].[single_ware_sells].[price]10,0031250,0001581391312,099[afsmut].[dbo].[single_ware_sells].[ware_code], [afsmut].[dbo].[single_ware_sells].[was_at], [afsmut].[dbo].[single_ware_sells].[payment_id], [afsmut].[dbo].[single_ware_sells].[quantity], [afsmut].[dbo].[single_ware_sells].[price]NULLPLAN_ROW1831930,2


Это без индекса

8590561SELECT [was_at] [DateTime],[quantity],[price] [retPrice],[Payment_ID],'' [RelayOrder],(0) [code],[Ware_Code] [WareCode],[price] [costByDoc],(0) [discount],(0) [difference],(-1) [rid] FROM [single_ware_sells] WHERE [object_ID]=@1 ORDER BY [Ware_Code] ASC,[was_at] ASC110NULLNULLNULLNULL831930,2NULLNULLNULL411,8669NULLNULLSELECT0NULL
00 |--Compute Scalar(DEFINE:([Expr1003]='', [Expr1004]=(0), [Expr1005]=(0), [Expr1006]=(0), [Expr1007]=(-1)))121Compute ScalarCompute ScalarDEFINE:([Expr1003]='', [Expr1004]=(0), [Expr1005]=(0), [Expr1006]=(0), [Expr1007]=(-1))[Expr1003]='', [Expr1004]=(0), [Expr1005]=(0), [Expr1006]=(0), [Expr1007]=(-1)831930,200,0831930260411,8669[afsmut].[dbo].[single_ware_sells].[ware_code], [afsmut].[dbo].[single_ware_sells].[was_at], [afsmut].[dbo].[single_ware_sells].[payment_id], [afsmut].[dbo].[single_ware_sells].[quantity], [afsmut].[dbo].[single_ware_sells].[price], [Expr1003], [Expr1004], [Expr1005], [Expr1006], [Expr1007]NULLPLAN_ROW01
8590561 |--Parallelism(Gather Streams, ORDER BY:([afsmut].[dbo].[single_ware_sells].[ware_code] ASC, [afsmut].[dbo].[single_ware_sells].[was_at] ASC))132ParallelismGather StreamsORDER BY:([afsmut].[dbo].[single_ware_sells].[ware_code] ASC, [afsmut].[dbo].[single_ware_sells].[was_at] ASC)NULL831930,206,5747539411,7837[afsmut].[dbo].[single_ware_sells].[ware_code], [afsmut].[dbo].[single_ware_sells].[was_at], [afsmut].[dbo].[single_ware_sells].[payment_id], [afsmut].[dbo].[single_ware_sells].[quantity], [afsmut].[dbo].[single_ware_sells].[price]NULLPLAN_ROW11
8590564 |--Sort(ORDER BY:([afsmut].[dbo].[single_ware_sells].[ware_code] ASC, [afsmut].[dbo].[single_ware_sells].[was_at] ASC))143SortSortORDER BY:([afsmut].[dbo].[single_ware_sells].[ware_code] ASC, [afsmut].[dbo].[single_ware_sells].[was_at] ASC)NULL831930,20,00563063137,5481439405,2089[afsmut].[dbo].[single_ware_sells].[ware_code], [afsmut].[dbo].[single_ware_sells].[was_at], [afsmut].[dbo].[single_ware_sells].[payment_id], [afsmut].[dbo].[single_ware_sells].[quantity], [afsmut].[dbo].[single_ware_sells].[price]NULLPLAN_ROW11
8590564 |--Clustered Index Scan(OBJECT:([afsmut].[dbo].[single_ware_sells].[PK_SingleWareSells]), WHERE:([afsmut].[dbo].[single_ware_sells].[object_id]=(20)))154Clustered Index ScanClustered Index ScanOBJECT:([afsmut].[dbo].[single_ware_sells].[PK_SingleWareSells]), WHERE:([afsmut].[dbo].[single_ware_sells].[object_id]=(20))[afsmut].[dbo].[single_ware_sells].[ware_code], [afsmut].[dbo].[single_ware_sells].[was_at], [afsmut].[dbo].[single_ware_sells].[payment_id], [afsmut].[dbo].[single_ware_sells].[quantity], [afsmut].[dbo].[single_ware_sells].[price]831930,2331,499425,1717443356,6712[afsmut].[dbo].[single_ware_sells].[ware_code], [afsmut].[dbo].[single_ware_sells].[was_at], [afsmut].[dbo].[single_ware_sells].[payment_id], [afsmut].[dbo].[single_ware_sells].[quantity], [afsmut].[dbo].[single_ware_sells].[price]NULLPLAN_ROW11
4 май 12, 11:51    [12506685]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
Мистер Хенки,

>Неплохая подсказка впринципе. При использовании этого индекса не надо будет делать лишнюю операцию (key lookup) можешь попробовать удалить старый и создать вот такой новый.

Это для этого конкретного запроса. Но запросы ведь могут быть разные и что общего у большинства, то, что часто выбирается данные по конкретному объекту, поэтому я на него и повесил индекс
4 май 12, 11:53    [12506697]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
Попробуй так
Select 
  t2.was_at as DateTime
  ,t2.quantity
  ,t2.price as retPrice
  ,t2.Payment_ID
  ,'' as RelayOrder
  ,0 as code
  ,t2.Ware_Code as WareCode
  ,t2.price as costByDoc
  ,0 as discount
  ,0 AS difference
  ,-1 as rid 
  from	single_ware_sells t1 
		cross apply(select 
							was_at
							,quantity
							,price
							,Payment_ID
							,Ware_Code
					from	single_ware_sells tt
					where tt.rec_id = t1.rec_id )t2
  where t1.object_ID = 20 
 order by t2.Ware_Code, t2.was_at


Это наверное поможет. Если несложно пришли потом план запроса
4 май 12, 12:28    [12506960]     Ответить | Цитировать Сообщить модератору
 Re: Заставить работать индекс  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
Мистер Хенки,

не помогло... Ладно, оставлю явное указание индекса

RowsExecutesStmtTextStmtIdNodeIdParentPhysicalOpLogicalOpArgumentDefinedValuesEstimateRowsEstimateIOEstimateCPUAvgRowSizeTotalSubtreeCostOutputListWarningsTypeParallelEstimateExecutions
8590561Select t2.was_at as DateTime ,t2.quantity ,t2.price as retPrice ,t2.Payment_ID ,'' as RelayOrder ,0 as code ,t2.Ware_Code as WareCode ,t2.price as costByDoc ,0 as discount ,0 AS difference ,-1 as rid from single_ware_sells t1 cross apply(select was_at ,quantity ,price ,Payment_ID ,Ware_Code from single_ware_sells tt where tt.rec_id = t1.rec_id )t2 where t1.object_ID = 20 order by t2.Ware_Code, t2.was_at110NULLNULLNULLNULL831930,2NULLNULLNULL556,7344NULLNULLSELECT0NULL
00 |--Compute Scalar(DEFINE:([Expr1004]='', [Expr1005]=(0), [Expr1006]=(0), [Expr1007]=(0), [Expr1008]=(-1)))121Compute ScalarCompute ScalarDEFINE:([Expr1004]='', [Expr1005]=(0), [Expr1006]=(0), [Expr1007]=(0), [Expr1008]=(-1))[Expr1004]='', [Expr1005]=(0), [Expr1006]=(0), [Expr1007]=(0), [Expr1008]=(-1)831930,200,0831930260556,7344[tt].[ware_code], [tt].[was_at], [tt].[payment_id], [tt].[quantity], [tt].[price], [Expr1004], [Expr1005], [Expr1006], [Expr1007], [Expr1008]NULLPLAN_ROW01
8590561 |--Sort(ORDER BY:([tt].[ware_code] ASC, [tt].[was_at] ASC))132SortSortORDER BY:([tt].[ware_code] ASC, [tt].[was_at] ASC)NULL831930,20,0112612675,0962839556,6512[tt].[ware_code], [tt].[was_at], [tt].[payment_id], [tt].[quantity], [tt].[price]NULLPLAN_ROW01
8590561 |--Merge Join(Inner Join, MERGE:([t1].[rec_id])=([tt].[rec_id]), RESIDUAL:([afsmut].[dbo].[single_ware_sells].[rec_id] as [tt].[rec_id]=[afsmut].[dbo].[single_ware_sells].[rec_id] as [t1].[rec_id]))143Merge JoinInner JoinMERGE:([t1].[rec_id])=([tt].[rec_id]), RESIDUAL:([afsmut].[dbo].[single_ware_sells].[rec_id] as [tt].[rec_id]=[afsmut].[dbo].[single_ware_sells].[rec_id] as [t1].[rec_id])NULL831930,2097,9458239481,5437[tt].[ware_code], [tt].[was_at], [tt].[payment_id], [tt].[quantity], [tt].[price]NULLPLAN_ROW01
8590561 |--Index Seek(OBJECT:([afsmut].[dbo].[single_ware_sells].[IX_Single_Ware_sell_ObjID] AS [t1]), SEEK:([t1].[object_id]=(20)) ORDERED FORWARD)154Index SeekIndex SeekOBJECT:([afsmut].[dbo].[single_ware_sells].[IX_Single_Ware_sell_ObjID] AS [t1]), SEEK:([t1].[object_id]=(20)) ORDERED FORWARD[t1].[rec_id]831930,20,83968720,9152802111,754967[t1].[rec_id]NULLPLAN_ROW01
457176311 |--Clustered Index Scan(OBJECT:([afsmut].[dbo].[single_ware_sells].[PK_SingleWareSells] AS [tt]), ORDERED FORWARD)164Clustered Index ScanClustered Index ScanOBJECT:([afsmut].[dbo].[single_ware_sells].[PK_SingleWareSells] AS [tt]), ORDERED FORWARD[tt].[rec_id], [tt].[ware_code], [tt].[was_at], [tt].[payment_id], [tt].[quantity], [tt].[price]4,576665E+07331,499450,3434743381,8429[tt].[rec_id], [tt].[ware_code], [tt].[was_at], [tt].[payment_id], [tt].[quantity], [tt].[price]NULLPLAN_ROW01
4 май 12, 12:41    [12507064]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить