|
Очень простой запрос и не понятные тормоза | ☑ | ||
---|---|---|---|---|
0
asa
17.04.19
✎
20:04
|
Добрый день, имеем следующие два запроса
Выполняется мгновенно ВЫБРАТЬ ПЕРВЫЕ 1 ВЫРАЗИТЬ(ТекущаяТаблица.Период КАК ДАТА) КАК Дата, СУММА(1) КАК Поле1 ИЗ РегистрНакопления.ПрочиеРасходыНезавершенногоПроизводства КАК ТекущаяТаблица ГДЕ ТекущаяТаблица.Регистратор = &Регистратор СГРУППИРОВАТЬ ПО ВЫРАЗИТЬ(ТекущаяТаблица.Период КАК ДАТА) УПОРЯДОЧИТЬ ПО Дата Выполняется около 1 минуты ВЫБРАТЬ ПЕРВЫЕ 1 ВЫРАЗИТЬ(ТекущаяТаблица.Период КАК ДАТА) КАК Дата, 1 КАК Поле1 ИЗ РегистрНакопления.ПрочиеРасходыНезавершенногоПроизводства КАК ТекущаяТаблица ГДЕ ТекущаяТаблица.Регистратор = &Регистратор УПОРЯДОЧИТЬ ПО Дата Если убрать упорядовачивание по дате то секунд 30, проверял на разных регистраторах, проблема воспроизводится, итоги регистра пересчитал, не пойму в чем проблема? Второй запрос это часть типовой проверки даты запрета от 1С |
|||
1
Immortal
17.04.19
✎
20:08
|
смотри запросы в СУБД, наверняка там не только разница в том что написано в 1С
|
|||
2
asa
17.04.19
✎
20:10
|
Это первый
SELECT TOP 1 T1._Period, CAST(SUM(1.0) AS NUMERIC(7, 0)) FROM dbo._AccumRg43819 T1 WHERE ((T1._Fld1670 = ?)) AND ((T1._RecorderTRef = 0x0000032F AND T1._RecorderRRef = ?)) GROUP BY T1._Period ORDER BY 1 p_0: 0N p_1: 0x80ED40A8F02A2E9811E95A035F9D2CEA Rows,Executes,EstimateRows,EstimateIO,EstimateCPU,AvgRowSize,TotalSubtreeCost,EstimateExecutions,StmtText 0, 0, 1, 0, 1E-007, 18, 0.817, 1, |--Compute Scalar(DEFINE:([Expr1002]=CONVERT(numeric(7,0),[Expr1001],0))) 1, 1, 1, 0.0113, 0.00087, 30, 0.817, 1, |--Sort(TOP 1, ORDER BY:([T1].[Период] ASC)) 1, 1, 78.4, 0, 0.467, 30, 0.805, 1, |--Hash Match(Aggregate, HASH:([T1].[Период]), RESIDUAL:([DON_ERP].[dbo].РегистрНакопления.ПрочиеРасходыНезавершенногоПроизводства.[Период] as [T1].[Период] = [DON_ERP].[dbo].РегистрНакопления.ПрочиеРасходыНезавершенногоПроизводства.[Период] as [T1].[Период]) DEFINE:([Expr1001]=SUM((1.0)))) 4797, 1, 6.71E+004, 0.264, 0.074, 13, 0.338, 1, |--Index Seek(OBJECT:([DON_ERP].[dbo].РегистрНакопления.ПрочиеРасходыНезавершенногоПроизводства.[_AccumRg43819_2] AS [T1]), SEEK:([T1].[ОбластьДанныхОсновныеДанные]=[@P1] AND [T1].[Регистратор]=0x0000032F AND [T1].[Регистратор]=[@P2]) ORDERED FORWARD) |
|||
3
asa
17.04.19
✎
20:11
|
Это второй
SELECT TOP 1 T1.Период, 1.0 FROM РегистрНакопления.ПрочиеРасходыНезавершенногоПроизводства T1 WHERE ((T1.ОбластьДанныхОсновныеДанные = ?)) AND ((T1.Регистратор = 0x0000032F AND T1.Регистратор = ?)) ORDER BY (T1.Период) p_0: 0N p_1: 0x80ED40A8F02A2E9811E95A035F9D2CEA Rows,Executes,EstimateRows,EstimateIO,EstimateCPU,AvgRowSize,TotalSubtreeCost,EstimateExecutions,StmtText 0, 0, 1, 0, 1E-007, 18, 0.0944, 1, |--Compute Scalar(DEFINE:([Expr1001]=(1.0))) 1, 1, 1, 0, 1E-007, 13, 0.0944, 1, |--Top(TOP EXPRESSION:((1))) 1, 1, 1, 5.93E+003, 106, 38, 0.0932, 1, |--Clustered Index Seek(OBJECT:([DON_ERP].[dbo].РегистрНакопления.ПрочиеРасходыНезавершенногоПроизводства.[_AccumRg43819_1] AS [T1]), SEEK:([T1].[ОбластьДанныхОсновныеДанные]=[@P1]), WHERE:([DON_ERP].[dbo].РегистрНакопления.ПрочиеРасходыНезавершенногоПроизводства.[Регистратор] as [T1].[Регистратор]=[@P2] AND [DON_ERP].[dbo].РегистрНакопления.ПрочиеРасходыНезавершенногоПроизводства.[Регистратор] as [T1].[Регистратор]=0x0000032F) ORDERED FORWARD) |
|||
4
asa
17.04.19
✎
20:12
|
Точнее вот
SELECT TOP 1 T1._Period, 1.0 FROM dbo._AccumRg74817 T1 WHERE ((T1._Fld1670 = ?)) AND ((T1._RecorderTRef = 0x00000245 AND T1._RecorderRRef = ?)) ORDER BY (T1._Period) p_0: 0N p_1: 0x80ED40A8F02A2E9811E956C5409E608C |
|||
5
asa
17.04.19
✎
20:28
|
ну скажите кто нибудь где мой взор "замылился"?
|
|||
6
Immortal
17.04.19
✎
20:41
|
А если статистику пересчитать все равно выдает в первом запросе такой план?
|
|||
7
Cyberhawk
17.04.19
✎
20:46
|
В чем твой вопрос - что индекс сик быстрее чем кластеред индекс сик или чо?
|
|||
8
Широкий
17.04.19
✎
20:51
|
Переиндексацию сделай
|
|||
9
Immortal
17.04.19
✎
20:52
|
в чистом виде можно попробовать, без группировки но с упорядочиванием, да
|
|||
10
H A D G E H O G s
17.04.19
✎
21:02
|
(0) У вас чет не то в статистике или индексах.
Сделал оба запроса - везде indexseek по некластерному индексы с продолжительностью в 0.002 секунды. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |