|
Запрос в динамическом списке ут11 + тормоза у пользователей | ☑ | ||
---|---|---|---|---|
0
DmitriyDI
23.01.15
✎
16:31
|
Есть типовой запрос в динамическом списке + маленькая дописка- добавили новый реквизит в документ - реализацию, и соответственно вывели в запросе в этот динамический список. Пользователи жалуются, что бывает часто, что система подвисает, настроил ТЖ на долгие запросы таким образом:
<event> <eq value="sdbl" property="name"/> <gt value="10000" property="duration"/> </event> , и этот запрос из динамического списка занимает 70% времени всех тяжелых запросов. Запрос находится в конфигурации ОбщаяФорма.СписокДокументовПродажи.Реквизит.СписокРеализацииТоваровУслуг (подсистема продажи, список документов продажи) , что можно еще посмотреть? и могут ли возникать тормоза из-за простого добавления реквизита документа в запрос? |
|||
1
WebberNSK
23.01.15
✎
17:24
|
РегистрыНакопления.Продажи.Регистратор.Номер?
|
|||
2
WebberNSK
23.01.15
✎
17:26
|
(1) + в общем может, скорей всего вы неявно наделали кучу левых соединений
1) а ссылку расшифровать нельзя было в пользовательском режиме до этого реквизита? 2) доп. реквизиты не подходят? |
|||
3
DmitriyDI
25.01.15
✎
12:44
|
(2) вот типовой запрос :
ВЫБРАТЬ ДокументРеализацияТоваровУслуг.Ссылка, ДокументРеализацияТоваровУслуг.ПометкаУдаления, ДокументРеализацияТоваровУслуг.Номер, ДокументРеализацияТоваровУслуг.Дата, ДокументРеализацияТоваровУслуг.Проведен, ДокументРеализацияТоваровУслуг.Автомобиль, ДокументРеализацияТоваровУслуг.АдресДоставки, ДокументРеализацияТоваровУслуг.БанковскийСчетОрганизации, ДокументРеализацияТоваровУслуг.БанковскийСчетКонтрагента, ДокументРеализацияТоваровУслуг.БанковскийСчетГрузоотправителя, ДокументРеализацияТоваровУслуг.БанковскийСчетГрузополучателя, ДокументРеализацияТоваровУслуг.БанковскийСчетПеревозчика, ДокументРеализацияТоваровУслуг.Валюта, ДокументРеализацияТоваровУслуг.ВалютаВзаиморасчетов, ДокументРеализацияТоваровУслуг.Водитель, ДокументРеализацияТоваровУслуг.Грузоотправитель, ДокументРеализацияТоваровУслуг.Грузополучатель, ДокументРеализацияТоваровУслуг.ДатаПлатежа, ДокументРеализацияТоваровУслуг.ДатаРаспоряжения, ДокументРеализацияТоваровУслуг.ДоверенностьВыдана, ДокументРеализацияТоваровУслуг.ДоверенностьДата, ДокументРеализацияТоваровУслуг.ДоверенностьЛицо, ДокументРеализацияТоваровУслуг.ДоверенностьНомер, ДокументРеализацияТоваровУслуг.ЗаказКлиента, ДокументРеализацияТоваровУслуг.Комментарий, ДокументРеализацияТоваровУслуг.Контрагент, ДокументРеализацияТоваровУслуг.Менеджер, ДокументРеализацияТоваровУслуг.НалогообложениеНДС, ДокументРеализацияТоваровУслуг.Организация, ДокументРеализацияТоваровУслуг.Партнер, ДокументРеализацияТоваровУслуг.Перевозчик, ДокументРеализацияТоваровУслуг.Подразделение, ДокументРеализацияТоваровУслуг.Сделка, ДокументРеализацияТоваровУслуг.СкидкиРассчитаны, ДокументРеализацияТоваровУслуг.Склад, ДокументРеализацияТоваровУслуг.Согласован, ДокументРеализацияТоваровУслуг.Соглашение, ДокументРеализацияТоваровУслуг.Договор, ДокументРеализацияТоваровУслуг.СрокДоставки, ДокументРеализацияТоваровУслуг.Статус, ДокументРеализацияТоваровУслуг.СуммаВзаиморасчетов, ДокументРеализацияТоваровУслуг.СуммаДокумента, ДокументРеализацияТоваровУслуг.ФормаОплаты, ДокументРеализацияТоваровУслуг.ХозяйственнаяОперация, ДокументРеализацияТоваровУслуг.ЦенаВключаетНДС, ДокументРеализацияТоваровУслуг.Касса, ДокументРеализацияТоваровУслуг.Отпустил, ДокументРеализацияТоваровУслуг.ОтпустилДолжность, ДокументРеализацияТоваровУслуг.СпособДоставки, ДокументРеализацияТоваровУслуг.АдресДоставки КАК АдресДоставки1, СостоянияЭД.СостояниеВерсииЭД, ВЫБОР КОГДА НЕ ДокументРеализацияТоваровУслуг.Проведен ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияОтгрузки.НеРассчитано) КОГДА СостоянияОтгрузки.Состояние ЕСТЬ NULL ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияОтгрузки.Доставлено) ИНАЧЕ СостоянияОтгрузки.Состояние КОНЕЦ КАК СостояниеОтгрузки ИЗ Документ.РеализацияТоваровУслуг КАК ДокументРеализацияТоваровУслуг ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЭД КАК СостоянияЭД ПО (СостоянияЭД.СсылкаНаОбъект = ДокументРеализацияТоваровУслуг.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияОтгрузки КАК СостоянияОтгрузки ПО ДокументРеализацияТоваровУслуг.Ссылка = СостоянияОтгрузки.ДокументОтгрузки добавили только из документа реализация товаров услуг. реквизит тип перечисление. реквизит не типовой и все |
|||
4
DmitriyDI
26.01.15
✎
09:48
|
up
|
|||
5
PRO100 NigGaZ
26.01.15
✎
09:58
|
точно этот запрос выполняется? как в подборе программно не дописывается?
|
|||
6
DmitriyDI
26.01.15
✎
12:20
|
(5) точно, еще в типовой автообновление отключено, у в базе, где тормозит включено, с периодом в 10
|
|||
7
H A D G E H O G s
26.01.15
✎
12:34
|
rls, невыполненные регламенты sql.
|
|||
8
DmitriyDI
26.01.15
✎
12:45
|
(7) как можно быстрее всего найти слабое место в rls?
|
|||
9
H A D G E H O G s
26.01.15
✎
12:49
|
(8) Посмотреть запрос и план выполнения запроса в профайлере.
|
|||
10
DmitriyDI
26.01.15
✎
18:23
|
получилось следующее, если я беру запрос из динамического списка, выполняется достаточно быстро, но в тех. журнале я вижу следующие отборы:
WHERE (CAST(Q_000_T_001.Fld10179 AS (Reference118)).Description LIKE "%текст%" ESCAPE "/") AND ( ((Q_000_T_001.Date_Time < DATETIME(2015,1,26,10,17,49)) OR Q_000_T_001.Date_Time IS NULL) OR ((Q_000_T_001.Date_Time = DATETIME(2015,1,26,10,17,49)) AND ((Q_000_T_001.ID < &П2) OR Q_000_T_001.ID IS NULL)) ) добавляю их в консоли запросов и все система висит... эти отборы это ведь отборы пользователя? как их можно отключить и почему с ними такое зависание (ну в принципе понятно, там он берет просто первых 30 записей, а тут всю таблицу реализаций перелопачивает, а потом только отсеивает по отбору?) |
|||
11
Fragster
гуру
26.01.15
✎
18:37
|
какое-то наименование содержит "траляля"... если очень нужно, то сделать полнотекстовый поиск, если нет - научиться польвзаоться "в списке" или равно
|
|||
12
Fragster
гуру
26.01.15
✎
18:37
|
нифига я в "пользоваться" опечатался :)
|
|||
13
DmitriyDI
26.01.15
✎
18:44
|
(11) даже если оставляю всего 2 отбора (Q_000_T_001.Date_Time < DATETIME(2015,1,26,10,17,49)) OR Q_000_T_001.Date_Time IS NULL)
OR (Q_000_T_001.Date_Time = DATETIME(2015,1,26,10,17,49) выполняется не реально долго |
|||
14
H A D G E H O G s
26.01.15
✎
18:46
|
(13) Текст запроса 1С, полностью напиши сюда
|
|||
15
DmitriyDI
26.01.15
✎
18:48
|
(14) вот это запрос, который выдал мне ТЖ
SELECT ALLOWED TOP 30 Q_000_T_001.ID sf_2, Q_000_T_001.Marked, Q_000_T_001.Number, Q_000_T_001.Date_Time sf_1, Q_000_T_001.Posted, Q_000_T_001.Fld10166, Q_000_T_001.Fld10179, Q_000_T_001.Fld10178, Q_000_T_001.Fld10183, Q_000_T_001.Fld10188, Q_000_T_001.Fld10182, Q_000_T_001.Fld10196, Q_000_T_001.Fld10209, Q_000_T_002.Fld13631, CASE WHEN (NOT(Q_000_T_001.Posted)) THEN &П WHEN Q_000_T_003.Fld13613 IS NULL THEN &П1 ELSE Q_000_T_003.Fld13613 END , Q_000_T_001.Fld10248 FROM Document343 Q_000_T_001 LEFT JOIN InfoRg13629 Q_000_T_002 ON (Q_000_T_002.Fld13630 = Q_000_T_001.ID) LEFT JOIN InfoRg13611 Q_000_T_003 ON (Q_000_T_001.ID = Q_000_T_003.Fld13612) WHERE (CAST(Q_000_T_001.Fld10179 AS (Reference118)).Description LIKE "%текст%" ESCAPE "/") AND ( ((Q_000_T_001.Date_Time < DATETIME(2015,1,26,10,17,49)) OR Q_000_T_001.Date_Time IS NULL) OR ((Q_000_T_001.Date_Time = DATETIME(2015,1,26,10,17,49)) AND ((Q_000_T_001.ID < &П2) OR Q_000_T_001.ID IS NULL)) ) ORDER BY sf_1 DESC, sf_2 DESC |
|||
16
DmitriyDI
26.01.15
✎
18:53
|
(14) вот этот запрос я написал, для проверки в консоли запросов:
Вот этот я попробовал выполнить в консоли: ВЫБРАТЬ ДокументРеализацияТоваровУслуг.Ссылка, ДокументРеализацияТоваровУслуг.ПометкаУдаления, ДокументРеализацияТоваровУслуг.Номер, ДокументРеализацияТоваровУслуг.Дата, ДокументРеализацияТоваровУслуг.Проведен, ДокументРеализацияТоваровУслуг.Автомобиль, ДокументРеализацияТоваровУслуг.АдресДоставки, ДокументРеализацияТоваровУслуг.БанковскийСчетОрганизации, ДокументРеализацияТоваровУслуг.БанковскийСчетКонтрагента, ДокументРеализацияТоваровУслуг.БанковскийСчетГрузоотправителя, ДокументРеализацияТоваровУслуг.БанковскийСчетГрузополучателя, ДокументРеализацияТоваровУслуг.БанковскийСчетПеревозчика, ДокументРеализацияТоваровУслуг.Валюта, ДокументРеализацияТоваровУслуг.ВалютаВзаиморасчетов, ДокументРеализацияТоваровУслуг.Водитель, ДокументРеализацияТоваровУслуг.Грузоотправитель, ДокументРеализацияТоваровУслуг.Грузополучатель, ДокументРеализацияТоваровУслуг.ДатаПлатежа, ДокументРеализацияТоваровУслуг.ДатаРаспоряжения, ДокументРеализацияТоваровУслуг.ДоверенностьВыдана, ДокументРеализацияТоваровУслуг.ДоверенностьДата, ДокументРеализацияТоваровУслуг.ДоверенностьЛицо, ДокументРеализацияТоваровУслуг.ДоверенностьНомер, ДокументРеализацияТоваровУслуг.ЗаказКлиента, ДокументРеализацияТоваровУслуг.Комментарий, ДокументРеализацияТоваровУслуг.Контрагент, ДокументРеализацияТоваровУслуг.Менеджер, ДокументРеализацияТоваровУслуг.НалогообложениеНДС, ДокументРеализацияТоваровУслуг.Организация, ДокументРеализацияТоваровУслуг.Партнер, ДокументРеализацияТоваровУслуг.Перевозчик, ДокументРеализацияТоваровУслуг.Подразделение, ДокументРеализацияТоваровУслуг.Сделка, ДокументРеализацияТоваровУслуг.СкидкиРассчитаны, ДокументРеализацияТоваровУслуг.Склад, ДокументРеализацияТоваровУслуг.Согласован, ДокументРеализацияТоваровУслуг.Соглашение, ДокументРеализацияТоваровУслуг.Договор, ДокументРеализацияТоваровУслуг.СрокДоставки, ДокументРеализацияТоваровУслуг.Статус, ДокументРеализацияТоваровУслуг.СуммаВзаиморасчетов, ДокументРеализацияТоваровУслуг.СуммаДокумента, ДокументРеализацияТоваровУслуг.ФормаОплаты, ДокументРеализацияТоваровУслуг.ХозяйственнаяОперация, ДокументРеализацияТоваровУслуг.ЦенаВключаетНДС, ДокументРеализацияТоваровУслуг.Касса, ДокументРеализацияТоваровУслуг.Отпустил, ДокументРеализацияТоваровУслуг.ОтпустилДолжность, ДокументРеализацияТоваровУслуг.СпособДоставки, ДокументРеализацияТоваровУслуг.АдресДоставки КАК АдресДоставки1, СостоянияЭД.СостояниеВерсииЭД, ВЫБОР КОГДА НЕ ДокументРеализацияТоваровУслуг.Проведен ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияОтгрузки.НеРассчитано) КОГДА СостоянияОтгрузки.Состояние ЕСТЬ NULL ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияОтгрузки.Доставлено) ИНАЧЕ СостоянияОтгрузки.Состояние КОНЕЦ КАК СостояниеОтгрузки, ДокументРеализацияТоваровУслуг.ДобавленноеПеречисление КАК Перечисление ИЗ Документ.РеализацияТоваровУслуг КАК ДокументРеализацияТоваровУслуг ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЭД КАК СостоянияЭД ПО (СостоянияЭД.СсылкаНаОбъект = ДокументРеализацияТоваровУслуг.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияОтгрузки КАК СостоянияОтгрузки ПО ДокументРеализацияТоваровУслуг.Ссылка = СостоянияОтгрузки.ДокументОтгрузки Где ((ДокументРеализацияТоваровУслуг.Дата < &ВыбДата) или ДокументРеализацияТоваровУслуг.Дата есть null) или (ДокументРеализацияТоваровУслуг.Дата = &ВыбДата) |
|||
17
H A D G E H O G s
26.01.15
✎
18:55
|
Счаст посмотрим
|
|||
18
H A D G E H O G s
26.01.15
✎
19:17
|
(16) Забыл Выбрать Первые 30
|
|||
19
H A D G E H O G s
26.01.15
✎
19:17
|
В планах запросов - вполне нормальный план, ну, более-менее.
|
|||
20
DmitriyDI
26.01.15
✎
19:51
|
(18) точно, спешил не поставил, но все равно почему же может этот запрос выполняться час (данные из тж)
|
|||
21
H A D G E H O G s
26.01.15
✎
21:01
|
(20) Давай доступ удаленный, посмотрим.
У меня отрабатывает за 200 миллисекунд. |
|||
22
Fragster
гуру
27.01.15
✎
10:56
|
(16) убери NULL нахфиг
|
|||
23
Fragster
гуру
27.01.15
✎
10:56
|
ДокументРеализацияТоваровУслуг.Дата <= &ВыбДата
|
|||
24
DmitriyDI
27.01.15
✎
10:57
|
(21) да сейчас у меня запрос тоже быстро отрабатывает, но почему может быть такое подвисание ?
(22) да я уберу. не понятно откуда он берется в (15) ? |
|||
25
Fragster
гуру
27.01.15
✎
11:05
|
в РС ссылки должны быть первым реквизитом
|
|||
26
Fragster
гуру
27.01.15
✎
11:19
|
в соединение можно добавить условие
И СостоянияЭД.СсылкаНаОбъект Ссылка Документ.РеализацияТоваровУслуг, и аналогичное для второго регистра, если там составной тип у измерения |
|||
27
Fragster
гуру
27.01.15
✎
11:20
|
а то я в (15) не вижу, но это какой-то SDBLный вид, реального скульного не видно, а для составных типов там еще одна колонка есть в индексе, и она - первая
|
|||
28
Fragster
гуру
27.01.15
✎
11:20
|
(27) вернее не одна, а несколько
|
|||
29
DmitriyDI
27.01.15
✎
11:34
|
(26) да там мне кажется не в этом причина, может так подвиснуть из-за блокировки? но, в тех журнале никаких данных по блокировкам не вижу.
|
|||
30
H A D G E H O G s
27.01.15
✎
11:40
|
(25) Так и есть.
(26) Нет, не надо. Там по регистрам нормально соединяется, без провалов по индексам. (29) В дин. списке не должно быть никаких блокировок, если, например, нет чтения объекта руками, например в ПриАктивацииСтроки() |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |