Имя: Пароль:
1C
1С v8
Очень простой запрос и не понятные тормоза
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 секунды.