|
Очень долго обрабатывается запрос | ☑ | ||
---|---|---|---|---|
0
Steynvor
03.07.14
✎
16:00
|
Всем доброго времени суток!
1С:Предприятие 8.1 (8.1.15.14), самописная, не мной. Запрос выполняется по 2-10 минут, уже не понимаю что ему надо, может кто подскажет. Все тормозит на РезультатЗапроса = Запрос.Выполнить(); : Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВводПутевогоЛистаСменыВПутевомЛисте.Ссылка.ГаражныйНомер КАК ГаражныйНомер, | ВводПутевогоЛистаСменыВПутевомЛисте.Водитель.Код КАК ТабельныйНомер, | ВводПутевогоЛистаСменыВПутевомЛисте.Водитель, | ВводПутевогоЛистаСменыВПутевомЛисте.Маршрут, | ВводПутевогоЛистаСменыВПутевомЛисте.График |ИЗ | Документ.ВводПутевогоЛиста.СменыВПутевомЛисте КАК ВводПутевогоЛистаСменыВПутевомЛисте |ГДЕ | ВводПутевогоЛистаСменыВПутевомЛисте.Ссылка.Дата МЕЖДУ &НачалоПериода И &ОкончаниеПериода | И ВводПутевогоЛистаСменыВПутевомЛисте.Кондуктор = &Кондуктор | И ВводПутевогоЛистаСменыВПутевомЛисте.Ссылка.СтадияОбработки = ЗНАЧЕНИЕ(Перечисление.СтадииОбработкиПутевогоЛиста.Выдан) | |УПОРЯДОЧИТЬ ПО | ВводПутевогоЛистаСменыВПутевомЛисте.НомерСмены"; Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(РабочаяДата)); Запрос.УстановитьПараметр("ОкончаниеПериода", КонецДня(РабочаяДата)); Запрос.УстановитьПараметр("Кондуктор", Кондуктор); РезультатЗапроса = Запрос.Выполнить(); |
|||
1
Fragster
гуру
03.07.14
✎
16:02
|
сначала отбери все документы, а потом уже к ним присоедини отбор по кондруктору во внутреннем соединении. кстати плохо работать с документами, тем более без проверки на проведенность. правильно писать нужные данные в регистр и делать запрос к нему напрямую.
|
|||
2
Steynvor
03.07.14
✎
16:03
|
Я только недавно начал работать с запросами 1С, поэтому можно объяснение как для чайника?
|
|||
3
Dionisious
03.07.14
✎
16:03
|
Переиндексация спасет. Ну или переход на 8.3.
|
|||
4
Dionisious
03.07.14
✎
16:04
|
База файловая?
|
|||
5
Steynvor
03.07.14
✎
16:05
|
Нет, не файловая
|
|||
6
anatoly
03.07.14
✎
16:05
|
база файловая или серверная?
+1 к варианту (1) |
|||
7
Steynvor
03.07.14
✎
16:06
|
(6) база серверная
|
|||
8
Fragster
гуру
03.07.14
✎
16:09
|
Выбрать Ссылка Поместить Доки Из Документ.ВводПутевогоЛиста Где Дата Между ... И СтадияОбработки = ... ;
Выбрать * Из Доки Внутреннее соединение Документ.ВводПутевогоЛиста.СменыВПутевомЛисте КАК Смены По Доки.Ссылка = Смены.Ссылка И Смены.Кондуктор = &Кондуктор |
|||
9
floody
03.07.14
✎
16:10
|
на SQL регламенты делаются?
|
|||
10
Steynvor
03.07.14
✎
16:10
|
(9) нет, я очень большой чайник (((
|
|||
11
Dionisious
03.07.14
✎
16:12
|
Тогда точно переиндексация и обновление статистики. И на поле Кондуктор индексирование поставь.
|
|||
12
Aloex
03.07.14
✎
16:13
|
Убери упорядочивание.
|
|||
13
Dionisious
03.07.14
✎
16:14
|
О упорядочивание - еще индексацию на поле НомерСмены.
|
|||
14
Fragster
гуру
03.07.14
✎
16:15
|
(13) чего уж мелочиться - на всё индексы пусть ставит. а потом будет все тормозить
|
|||
15
H A D G E H O G s
03.07.14
✎
16:15
|
(11) "И на поле Кондуктор индексирование поставь."
Зачем? |
|||
16
H A D G E H O G s
03.07.14
✎
16:16
|
(13) Зачем?
|
|||
17
Fragster
гуру
03.07.14
✎
16:16
|
(16) недостаточно индексов, нужно больше индексов (это все голосом террановской тетки из старкрафта)
|
|||
18
H A D G E H O G s
03.07.14
✎
16:16
|
Уровень грамотности 1Снегов зашкаливает. Тормозит - ставь индекс, хренли...
|
|||
19
acsent
03.07.14
✎
16:18
|
(18) как раз тут индекс очень даже в тему
|
|||
20
Steynvor
03.07.14
✎
16:19
|
(19) Как это написать?
|
|||
21
Fragster
гуру
03.07.14
✎
16:19
|
(19) а я бы на неактуальность статистики грешил, или еще чего-то. ведь запрос по логике должен в подобие (8) сам превратиться, только вот почему-то не превращается
|
|||
22
H A D G E H O G s
03.07.14
✎
16:21
|
(19) Этот индекс войдет в состав кластерного индекса?
|
|||
23
acsent
03.07.14
✎
16:23
|
(22) нет, а почему должен то?
|
|||
24
H A D G E H O G s
03.07.14
✎
16:23
|
(19) Для табличной части есть кластерный индекс по ссылке и номеру строки. Войдет ли в него поле "Кондуктор" или будет создан отдельный некластерный индекс, который, скорее всего, будет "хуже" кластерного и никогда не используется.
|
|||
25
Dionisious
03.07.14
✎
16:24
|
Собственно я и писал сначала индексирование, обновление статистики, потом если не поможет попробовать индексы на поля отбора и упорядочивания.
|
|||
26
H A D G E H O G s
03.07.14
✎
16:24
|
(23) В тех книге эксперта ничего нет про табличные части объектов, вот я и спрашиваю, а проверять - лениво.
|
|||
27
acsent
03.07.14
✎
16:24
|
(24) в данной задаче будет всегда использоваться
|
|||
28
acsent
03.07.14
✎
16:25
|
а индекс по ссылке в запросе (0) как раз и не используется
|
|||
29
H A D G E H O G s
03.07.14
✎
16:25
|
(27) Там left join по ссылке с основной таблицей.
|
|||
30
H A D G E H O G s
03.07.14
✎
16:32
|
(28) Чей-то? Вообще, конечно, зависит от периода.
Попадет в период мало документов - селективность будет достаточна и будет табличная часть отбираться по кластерному индексу (indexseek), будет много документов - эээээ, - хз - indexseek по "Кондуктор" + keylookup ? |
|||
31
H A D G E H O G s
03.07.14
✎
16:33
|
Запутался.
|
|||
32
acsent
03.07.14
✎
16:33
|
(29) по ссылке от основной таблицы, а не от таблицы тч
|
|||
33
acsent
03.07.14
✎
16:34
|
Если бы внутренне было соединение, тогда сиквел бы выбрал сам какая таблица основная. а тут левое.
Поэтому тэйбл скан + лукап |
|||
34
H A D G E H O G s
03.07.14
✎
16:35
|
(33) Проверишь?
|
|||
35
Fragster
гуру
03.07.14
✎
16:35
|
началось гадание, а (8) решило все проблемы...
|
|||
36
Fragster
гуру
03.07.14
✎
16:35
|
(35)+ хотя и его можно улучшить, сделав сразу внутреннее без временной таблицы
|
|||
37
acsent
03.07.14
✎
16:39
|
(34) А что проверять. И так все понятно.
Фрагстер прав. Нужно ручками развернуть соединение и сделать внутреннее |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |