![]() |
|
Оптимизация запроса | ☑ | ||
---|---|---|---|---|
0
FFrr1C
08.12.22
✎
22:15
|
Есть простейший запрос для УТ 11
ВЫБРАТЬ ДополнительныеСведения.Объект.Ссылка КАК ССылка, ДополнительныеСведения.Свойство КАК Свойство, ДополнительныеСведения.Значение КАК Значение ИЗ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения ГДЕ ДополнительныеСведения.Объект.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ ПоручениеЭкспедиторуОснования.Основание.Ссылка КАК Ссылка ИЗ Документ.ПоручениеЭкспедитору.Основания КАК ПоручениеЭкспедиторуОснования ГДЕ ПоручениеЭкспедиторуОснования.Ссылка = &Ссылка) уходит в стопор, что не так делаю парни? |
|||
1
Волшебник
08.12.22
✎
22:18
|
не надо .Ссылка
|
|||
2
FFrr1C
08.12.22
✎
22:19
|
там реализации основания для поручения экспедитору ссылки, а реализации имеют максимум по одному доп сведению
|
|||
3
FFrr1C
08.12.22
✎
22:20
|
в начале?
|
|||
4
Ryzeman
08.12.22
✎
22:21
|
Всё.
ВЫБРАТЬ РАЗЛИЧНЫЕ ПоручениеЭкспедиторуОснования.Основание КАК Ссылка ПОМЕСТИТЬ ВТ_Основания Документ.ПоручениеЭкспедитору.Основания КАК ПоручениеЭкспедиторуОснования ГДЕ ПоручениеЭкспедиторуОснования.Ссылка = &Ссылка; //////////////////////////////////////////////// ВЫБРАТЬ ВТ_Основания.Ссылка КАК Ссылка ДополнительныеСведения.Свойство КАК Свойство, ДополнительныеСведения.Значение КАК Значение ИЗ ВТ_Основания КАК ВТ_Основания ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения ПО ДополнительныеСведения.Объект = ВТ_Основания.Ссылка Попробуй и кайфани |
|||
5
Ryzeman
08.12.22
✎
22:22
|
Если у тебя заполнение допссведений не принудительное, то вместо внутреннего соединения сделай левое и обработай правильно NULL
|
|||
6
Ryzeman
08.12.22
✎
22:23
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
ПоручениеЭкспедитору.Основание КАК Ссылка ПОМЕСТИТЬ ВТ_Основания ИЗ Документ.ПоручениеЭкспедитору КАК ПоручениеЭкспедитору ГДЕ ПоручениеЭкспедитору.Основание = &Ссылка; Просмотрел первый блок) |
|||
7
FFrr1C
08.12.22
✎
22:24
|
Я понял, спасибо,но просто .ссылку убрал и 0,012с выполнение!
|
|||
8
Ryzeman
08.12.22
✎
22:24
|
Ну и что бы вообще классно работало - проверь есть ли индекс на основаниях. Можешь построить средствами СУБД если умеешь.
|
|||
9
FFrr1C
08.12.22
✎
22:26
|
Индекса нет, но это не железный повод уходить в стопорт
в чем прикол не понятно.. в чем разница ПоручениеЭкспедитору.Основание и ПоручениеЭкспедитору.Основание.Ссылка? |
|||
10
vicof
08.12.22
✎
22:28
|
(9) Посмотри выполняемые запросы на sql-сервере и посмотри разницу
|
|||
11
Ryzeman
08.12.22
✎
22:28
|
(9) Посмотри план запроса. Когда ты делаешь ссылка.ссылка внутренним (если не левым) привязываются все таблицы которые там могут быть в первой ссылке.
|
|||
12
FFrr1C
08.12.22
✎
22:33
|
а конкретно "ссылка.ссылка внутренним (если не левым) привязываются все таблицы" - это конкретно где в исходном запросе получается неправильно?
|
|||
13
FFrr1C
08.12.22
✎
22:33
|
там соединений нет
|
|||
14
vicof
08.12.22
✎
22:34
|
(13) ну-ну.
|
|||
15
FFrr1C
08.12.22
✎
22:35
|
Понял вас! соединения в скуле если составнойТип.Ссылка,
Спасибо! |
|||
16
FFrr1C
08.12.22
✎
22:37
|
"Если в запросе используется получение значения через точку от поля составного ссылочного типа, то при выполнении этого запроса будет выполняться соединение со всеми таблицами объектов, входящими в этот составной тип. В результате SQL текст запроса чрезвычайно усложняется, и при его выполнении оптимизатор СУБД может выбрать неоптимальный план. Это может привести к серьезным проблемам производительности и даже к неработоспособности запроса в отдельных случаях."
|
|||
17
magicSan
09.12.22
✎
07:11
|
различные работает дольше чем группировка
|
|||
18
mikecool
09.12.22
✎
10:01
|
(17) да ну? чем докажешь?
|
|||
19
arsik
гуру
09.12.22
✎
10:21
|
+(18) Я тоже всегда считал, что группировка тяжелее
|
|||
20
Курцвейл
09.12.22
✎
10:26
|
(17) Это абсолютно одинаковые инструкции для сервера.
|
|||
21
magicSan
09.12.22
✎
10:43
|
(18) берешь запрос с миллионом записей и смотришь в консоли
(19) см. выше (20) disitinct и group by ? |
|||
22
Курцвейл
09.12.22
✎
14:07
|
(21) Да
|
|||
23
Курцвейл
09.12.22
✎
14:11
|
(21) Речь конечно о ситуации когда результат disitinct или group by не будут отличаться. Оптимизатор запроса понимает что ему требуется и по сути будет генерировать и там и там одинаковый план запроса.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |