|
Запрос выполняется долго, но консоль показывает нормальное время | ☑ | ||
---|---|---|---|---|
0
Kukr47
03.06.24
✎
13:04
|
Проблема такая:
На рабочей базе запрос выполняется около 15-20 секунд, в консоле по факту выполняется также(то есть висит 15-20 сек), но время показывает 0.08. На тестовых базах такого нет - время фактическое совпадает с временем которое выводится в консоли и ничего не висит, дело не в правах т.к. запрос выполняется под привилегированным режимом, потыкая запрос понял что проблема в группировке и упорядочивании по неограниченным строкам, в общем методом тыка поправил запрос, пришлось индексировать поля чтобы ушла это фактическая задержка и фактическое время начало совпадать с тем что выводит консоль, но тем самым я получил время в 1.5-2 раза больше чем было и теперь на тестовых базах выполняется дольше Кто-нибудь сталкивался с таким, в чем может быть проблема? |
|||
1
Волшебник
03.06.24
✎
13:06
|
Ускорьте запрос до 1 сек, это же система 1С (одна секунда)
|
|||
2
Kukr47
03.06.24
✎
13:07
|
(1) он и так выполняется 0.08, просто на тестовой это действительно 0.08, а на рабочей это превращается в 15-20 секунд. При тех же вводных данных
|
|||
3
Волшебник
03.06.24
✎
13:07
|
(2) Ускорьте запрос на рабочей до 1 сек
|
|||
4
Волшебник
03.06.24
✎
13:09
|
Оцените объём данных, план запроса.
Оптимизируйте. Уберите обработку строк неограниченной длины. Добавьте новые реквизиты. Добавьте индексы. Освежите статистику сервера базы. Измените постановку задачи. |
|||
5
Kukr47
03.06.24
✎
13:12
|
(3) (4) я спрашиваю о том что запрос выполняется разное кол-во времени на разных базах при одних и тех же данных, а вы мне про ускорение запроса до 1 секунды) Спасибо)
|
|||
6
Ненавижу 1С
03.06.24
✎
13:13
|
Если время показывает - 0.08, то скорее всего дело в построчных запросах вывода представления ссылок.
Конкретно - у вас основной запрос выполняется быстро, но вы на экран выводите ссылки, они имеют представления, которые не хранятся в самих ссылках. Так вот 1С для каждой ссылки формирует отдельный запрос для вывода на экран. Попробуйте скрыть ссылки и выводить сразу ПРЕДСТАВЛЕНИЕ(Ссылка) из запроса |
|||
7
Волшебник
03.06.24
✎
13:13
|
(5) Вы врёте. Запрос не показываете. Вам врут в ответ.
|
|||
8
Kukr47
03.06.24
✎
13:14
|
(6) на экран ничего не вывожу, знаю про это, исход такой же
|
|||
9
Ненавижу 1С
03.06.24
✎
13:18
|
Тогда только показать запрос остается
|
|||
10
Kukr47
03.06.24
✎
13:21
|
(7) (9) запрос который "лагает"
ВЫБРАТЬ ЗаданиеНаПеревозкуРаспоряжения.НомерСтроки, ЗаданиеНаПеревозкуРаспоряжения.Ссылка.Дата, ЗаданиеНаПеревозкуРаспоряжения.КлючСвязи, ЗаданиеНаПеревозкуРаспоряжения.ВремяС, ЗаданиеНаПеревозкуРаспоряжения.ВремяПо, ЗаданиеНаПеревозкуРаспоряжения.ДополнительнаяИнформация, ЗаданиеНаПеревозкуМаршрут.Адрес, ЗаданиеНаПеревозкуМаршрут.АдресЗначенияПолей ПОМЕСТИТЬ ВТ_ЗаданиеНаПеревозкуСтроки ИЗ Документ.ЗаданиеНаПеревозку.Распоряжения КАК ЗаданиеНаПеревозкуРаспоряжения ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаПеревозку.Маршрут КАК ЗаданиеНаПеревозкуМаршрут ПО (ЗаданиеНаПеревозкуМаршрут.КлючСвязи = ЗаданиеНаПеревозкуРаспоряжения.КлючСвязи) ГДЕ ЗаданиеНаПеревозкуРаспоряжения.Ссылка.Проведен И (ЗаданиеНаПеревозкуРаспоряжения.ПолучательОтправитель = &ПолучательОтправитель ИЛИ &ПолучательОтправитель = НЕОПРЕДЕЛЕНО) И (ЗаданиеНаПеревозкуРаспоряжения.Перевозчик = &Перевозчик ИЛИ &Перевозчик = НЕОПРЕДЕЛЕНО И ЗаданиеНаПеревозкуРаспоряжения.Перевозчик = ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка)) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПЕРВЫЕ 3 ВТ_ЗаданиеНаПеревозкуСтроки.Адрес КАК Адрес, МАКСИМУМ(ВТ_ЗаданиеНаПеревозкуСтроки.Дата) КАК Дата ПОМЕСТИТЬ ВТ_ПоследниеАдреса ИЗ ВТ_ЗаданиеНаПеревозкуСтроки КАК ВТ_ЗаданиеНаПеревозкуСтроки ГДЕ ВТ_ЗаданиеНаПеревозкуСтроки.Адрес <> "" СГРУППИРОВАТЬ ПО ВТ_ЗаданиеНаПеревозкуСтроки.Адрес УПОРЯДОЧИТЬ ПО МАКСИМУМ(ВТ_ЗаданиеНаПеревозкуСтроки.Дата) УБЫВ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ПоследниеАдреса.Адрес, ЗаданиеНаПеревозкуМаршрут.Зона, ЗаданиеНаПеревозкуМаршрут.Ссылка.Дата ПОМЕСТИТЬ ВТ_МаршрутыСНужнымиАдресами ИЗ ВТ_ПоследниеАдреса КАК ВТ_ПоследниеАдреса ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаПеревозку.Маршрут КАК ЗаданиеНаПеревозкуМаршрут ПО ВТ_ПоследниеАдреса.Адрес = ЗаданиеНаПеревозкуМаршрут.Адрес ГДЕ ЗаданиеНаПеревозкуМаршрут.Ссылка.Проведен ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ПоследниеАдреса.Адрес, МАКСИМУМ(ВТ_МаршрутыСНужнымиАдресами.Дата) КАК Дата ПОМЕСТИТЬ ВТ_ДатыПоследнихЗонПоАдресам ИЗ ВТ_ПоследниеАдреса КАК ВТ_ПоследниеАдреса ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_МаршрутыСНужнымиАдресами КАК ВТ_МаршрутыСНужнымиАдресами ПО ВТ_ПоследниеАдреса.Адрес = ВТ_МаршрутыСНужнымиАдресами.Адрес СГРУППИРОВАТЬ ПО ВТ_ПоследниеАдреса.Адрес ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(ВТ_МаршрутыСНужнымиАдресами.Зона) КАК Зона, ВТ_ДатыПоследнихЗонПоАдресам.Адрес ПОМЕСТИТЬ ВТ_ПоследниеЗоныПоАдресам ИЗ ВТ_МаршрутыСНужнымиАдресами КАК ВТ_МаршрутыСНужнымиАдресами ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ДатыПоследнихЗонПоАдресам КАК ВТ_ДатыПоследнихЗонПоАдресам ПО (ВТ_ДатыПоследнихЗонПоАдресам.Адрес = ВТ_МаршрутыСНужнымиАдресами.Адрес) И (ВТ_ДатыПоследнихЗонПоАдресам.Дата = ВТ_МаршрутыСНужнымиАдресами.Дата) СГРУППИРОВАТЬ ПО ВТ_ДатыПоследнихЗонПоАдресам.Адрес ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ПоследниеАдреса.Адрес, МАКСИМУМ(ВТ_ЗаданиеНаПеревозкуСтроки.КлючСвязи) КАК КлючСвязи ПОМЕСТИТЬ ВТ_ПоследниеАдресаКлючиСвязи ИЗ ВТ_ПоследниеАдреса КАК ВТ_ПоследниеАдреса ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ЗаданиеНаПеревозкуСтроки КАК ВТ_ЗаданиеНаПеревозкуСтроки ПО (ВТ_ЗаданиеНаПеревозкуСтроки.Адрес = ВТ_ПоследниеАдреса.Адрес) И (ВТ_ЗаданиеНаПеревозкуСтроки.Дата = ВТ_ПоследниеАдреса.Дата) СГРУППИРОВАТЬ ПО ВТ_ПоследниеАдреса.Адрес ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ПоследниеАдресаКлючиСвязи.КлючСвязи, МАКСИМУМ(ВТ_ЗаданиеНаПеревозкуСтроки.НомерСтроки) КАК НомерСтроки ПОМЕСТИТЬ ВТ_ПоследниеАдресаКлючиСвязиНомераСтрок ИЗ ВТ_ПоследниеАдресаКлючиСвязи КАК ВТ_ПоследниеАдресаКлючиСвязи ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ЗаданиеНаПеревозкуСтроки КАК ВТ_ЗаданиеНаПеревозкуСтроки ПО (ВТ_ЗаданиеНаПеревозкуСтроки.КлючСвязи = ВТ_ПоследниеАдресаКлючиСвязи.КлючСвязи) СГРУППИРОВАТЬ ПО ВТ_ПоследниеАдресаКлючиСвязи.Адрес, ВТ_ПоследниеАдресаКлючиСвязи.КлючСвязи ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ЗаданиеНаПеревозкуСтроки.Адрес КАК АдресДоставки, ВТ_ЗаданиеНаПеревозкуСтроки.АдресЗначенияПолей КАК АдресДоставкиЗначенияПолей, ВТ_ПоследниеЗоныПоАдресам.Зона КАК ЗонаДоставки, ВТ_ЗаданиеНаПеревозкуСтроки.ВремяС КАК ВремяДоставкиС, ВТ_ЗаданиеНаПеревозкуСтроки.ВремяПо КАК ВремяДоставкиПо, ВТ_ЗаданиеНаПеревозкуСтроки.ДополнительнаяИнформация КАК ДополнительнаяИнформацияПоДоставке ИЗ ВТ_ЗаданиеНаПеревозкуСтроки КАК ВТ_ЗаданиеНаПеревозкуСтроки ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПоследниеАдресаКлючиСвязиНомераСтрок КАК ВТ_ПоследниеАдресаКлючиСвязиНомераСтрок ПО ВТ_ЗаданиеНаПеревозкуСтроки.КлючСвязи = ВТ_ПоследниеАдресаКлючиСвязиНомераСтрок.КлючСвязи И ВТ_ЗаданиеНаПеревозкуСтроки.НомерСтроки = ВТ_ПоследниеАдресаКлючиСвязиНомераСтрок.НомерСтроки ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПоследниеЗоныПоАдресам КАК ВТ_ПоследниеЗоныПоАдресам ПО (ВТ_ПоследниеЗоныПоАдресам.Адрес = ВТ_ЗаданиеНаПеревозкуСтроки.Адрес) УПОРЯДОЧИТЬ ПО ВТ_ЗаданиеНаПеревозкуСтроки.Дата УБЫВ, ВТ_ЗаданиеНаПеревозкуСтроки.Адрес |
|||
11
Kukr47
03.06.24
✎
13:23
|
(7) (9) Исправил его вот так, после чего время реальное стало совпадать с временем в консоли
ВЫБРАТЬ ЗаданиеНаПеревозкуРаспоряжения.НомерСтроки КАК НомерСтроки, ЗаданиеНаПеревозкуРаспоряжения.Ссылка.Дата КАК Дата, ЗаданиеНаПеревозкуРаспоряжения.КлючСвязи КАК КлючСвязи, ЗаданиеНаПеревозкуРаспоряжения.ВремяС КАК ВремяС, ЗаданиеНаПеревозкуРаспоряжения.ВремяПо КАК ВремяПо, ВЫРАЗИТЬ(ЗаданиеНаПеревозкуРаспоряжения.ДополнительнаяИнформация КАК СТРОКА(1024)) КАК ДополнительнаяИнформация, ЗаданиеНаПеревозкуМаршрут.Адрес КАК Адрес, ВЫРАЗИТЬ(ЗаданиеНаПеревозкуМаршрут.АдресЗначенияПолей КАК СТРОКА(1024)) КАК АдресЗначенияПолей ПОМЕСТИТЬ ВТ_ЗаданиеНаПеревозкуСтроки ИЗ Документ.ЗаданиеНаПеревозку.Распоряжения КАК ЗаданиеНаПеревозкуРаспоряжения ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаПеревозку.Маршрут КАК ЗаданиеНаПеревозкуМаршрут ПО (ЗаданиеНаПеревозкуМаршрут.КлючСвязи = ЗаданиеНаПеревозкуРаспоряжения.КлючСвязи) ГДЕ ЗаданиеНаПеревозкуРаспоряжения.Ссылка.Проведен И (ЗаданиеНаПеревозкуРаспоряжения.ПолучательОтправитель = &ПолучательОтправитель ИЛИ &ПолучательОтправитель = НЕОПРЕДЕЛЕНО) И (ЗаданиеНаПеревозкуРаспоряжения.Перевозчик = &Перевозчик ИЛИ &Перевозчик = НЕОПРЕДЕЛЕНО И ЗаданиеНаПеревозкуРаспоряжения.Перевозчик = ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка) ) ИНДЕКСИРОВАТЬ ПО ЗаданиеНаПеревозкуМаршрут.Адрес, ЗаданиеНаПеревозкуРаспоряжения.Ссылка.Дата ; ВЫБРАТЬ ЗаданиеНаПеревозкуРаспоряжения.НомерСтроки КАК НомерСтроки, ЗаданиеНаПеревозкуРаспоряжения.Ссылка.Дата КАК Дата, ЗаданиеНаПеревозкуРаспоряжения.КлючСвязи КАК КлючСвязи, ЗаданиеНаПеревозкуРаспоряжения.ВремяС КАК ВремяС, ЗаданиеНаПеревозкуРаспоряжения.ВремяПо КАК ВремяПо, ВЫРАЗИТЬ(ЗаданиеНаПеревозкуРаспоряжения.ДополнительнаяИнформация КАК СТРОКА(1024)) КАК ДополнительнаяИнформация, ЗаданиеНаПеревозкуМаршрут.Адрес КАК Адрес, ВЫРАЗИТЬ(ЗаданиеНаПеревозкуМаршрут.АдресЗначенияПолей КАК СТРОКА(1024)) КАК АдресЗначенияПолей ПОМЕСТИТЬ ВТ_ЗаданиеНаПеревозкуСтрокиИндексКлючСвязи ИЗ Документ.ЗаданиеНаПеревозку.Распоряжения КАК ЗаданиеНаПеревозкуРаспоряжения ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаПеревозку.Маршрут КАК ЗаданиеНаПеревозкуМаршрут ПО (ЗаданиеНаПеревозкуМаршрут.КлючСвязи = ЗаданиеНаПеревозкуРаспоряжения.КлючСвязи) ГДЕ ЗаданиеНаПеревозкуРаспоряжения.Ссылка.Проведен И (ЗаданиеНаПеревозкуРаспоряжения.ПолучательОтправитель = &ПолучательОтправитель ИЛИ &ПолучательОтправитель = НЕОПРЕДЕЛЕНО) И (ЗаданиеНаПеревозкуРаспоряжения.Перевозчик = &Перевозчик ИЛИ &Перевозчик = НЕОПРЕДЕЛЕНО И ЗаданиеНаПеревозкуРаспоряжения.Перевозчик = ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка) ) ИНДЕКСИРОВАТЬ ПО ЗаданиеНаПеревозкуРаспоряжения.КлючСвязи, ЗаданиеНаПеревозкуРаспоряжения.НомерСтроки ; ////////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ЗаданиеНаПеревозкуСтроки.Адрес КАК Адрес, МАКСИМУМ(ВТ_ЗаданиеНаПеревозкуСтроки.Дата) КАК Дата ПОМЕСТИТЬ ВТ_ПоследниеАдреса_неУпорядок ИЗ ВТ_ЗаданиеНаПеревозкуСтроки КАК ВТ_ЗаданиеНаПеревозкуСтроки ГДЕ ВТ_ЗаданиеНаПеревозкуСтроки.Адрес <> "" СГРУППИРОВАТЬ ПО ВТ_ЗаданиеНаПеревозкуСтроки.Адрес ; ВЫБРАТЬ ПЕРВЫЕ 3 ВТ_ПоследниеАдреса_неУпорядок.Адрес КАК Адрес, ВТ_ПоследниеАдреса_неУпорядок.Дата КАК Дата ПОМЕСТИТЬ ВТ_ПоследниеАдреса ИЗ ВТ_ПоследниеАдреса_неУпорядок КАК ВТ_ПоследниеАдреса_неУпорядок ГДЕ ВТ_ПоследниеАдреса_неУпорядок.Адрес <> "" УПОРЯДОЧИТЬ ПО ВТ_ПоследниеАдреса_неУпорядок.Дата УБЫВ ИНДЕКСИРОВАТЬ ПО ВТ_ПоследниеАдреса_неУпорядок.Адрес ; ////////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ПоследниеАдреса.Адрес КАК Адрес, ЗаданиеНаПеревозкуМаршрут.Зона КАК Зона, ЗаданиеНаПеревозкуМаршрут.Ссылка.Дата КАК Дата ПОМЕСТИТЬ ВТ_МаршрутыСНужнымиАдресами ИЗ ВТ_ПоследниеАдреса КАК ВТ_ПоследниеАдреса ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаПеревозку.Маршрут КАК ЗаданиеНаПеревозкуМаршрут ПО ВТ_ПоследниеАдреса.Адрес = ЗаданиеНаПеревозкуМаршрут.Адрес ГДЕ ЗаданиеНаПеревозкуМаршрут.Ссылка.Проведен ; ////////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ПоследниеАдреса.Адрес КАК Адрес, МАКСИМУМ(ВТ_МаршрутыСНужнымиАдресами.Дата) КАК Дата ПОМЕСТИТЬ ВТ_ДатыПоследнихЗонПоАдресам ИЗ ВТ_ПоследниеАдреса КАК ВТ_ПоследниеАдреса ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_МаршрутыСНужнымиАдресами КАК ВТ_МаршрутыСНужнымиАдресами ПО ВТ_ПоследниеАдреса.Адрес = ВТ_МаршрутыСНужнымиАдресами.Адрес СГРУППИРОВАТЬ ПО ВТ_ПоследниеАдреса.Адрес ; ////////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(ВТ_МаршрутыСНужнымиАдресами.Зона) КАК Зона, ВТ_ДатыПоследнихЗонПоАдресам.Адрес КАК Адрес ПОМЕСТИТЬ ВТ_ПоследниеЗоныПоАдресам ИЗ ВТ_МаршрутыСНужнымиАдресами КАК ВТ_МаршрутыСНужнымиАдресами ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ДатыПоследнихЗонПоАдресам КАК ВТ_ДатыПоследнихЗонПоАдресам ПО (ВТ_ДатыПоследнихЗонПоАдресам.Адрес = ВТ_МаршрутыСНужнымиАдресами.Адрес) И (ВТ_ДатыПоследнихЗонПоАдресам.Дата = ВТ_МаршрутыСНужнымиАдресами.Дата) СГРУППИРОВАТЬ ПО ВТ_ДатыПоследнихЗонПоАдресам.Адрес индексировать по ВТ_ДатыПоследнихЗонПоАдресам.Адрес ; //////////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ПоследниеАдреса.Адрес КАК Адрес, МАКСИМУМ(ВТ_ЗаданиеНаПеревозкуСтроки.КлючСвязи) КАК КлючСвязи ПОМЕСТИТЬ ВТ_ПоследниеАдресаКлючиСвязи ИЗ ВТ_ПоследниеАдреса КАК ВТ_ПоследниеАдреса внутреннее СОЕДИНЕНИЕ ВТ_ЗаданиеНаПеревозкуСтроки КАК ВТ_ЗаданиеНаПеревозкуСтроки ПО (ВТ_ЗаданиеНаПеревозкуСтроки.Адрес = ВТ_ПоследниеАдреса.Адрес) И (ВТ_ЗаданиеНаПеревозкуСтроки.Дата = ВТ_ПоследниеАдреса.Дата) СГРУППИРОВАТЬ ПО ВТ_ПоследниеАдреса.Адрес ИНДЕКСИРОВАТЬ ПО МАКСИМУМ(ВТ_ЗаданиеНаПеревозкуСтроки.КлючСвязи) ; //////////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ПоследниеАдресаКлючиСвязи.КлючСвязи КАК КлючСвязи, МАКСИМУМ(ВТ_ЗаданиеНаПеревозкуСтроки.НомерСтроки) КАК НомерСтроки ПОМЕСТИТЬ ВТ_ПоследниеАдресаКлючиСвязиНомераСтрок ИЗ ВТ_ПоследниеАдресаКлючиСвязи КАК ВТ_ПоследниеАдресаКлючиСвязи ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ЗаданиеНаПеревозкуСтрокиИндексКлючСвязи КАК ВТ_ЗаданиеНаПеревозкуСтроки ПО (ВТ_ЗаданиеНаПеревозкуСтроки.КлючСвязи = ВТ_ПоследниеАдресаКлючиСвязи.КлючСвязи) СГРУППИРОВАТЬ ПО ВТ_ПоследниеАдресаКлючиСвязи.Адрес, ВТ_ПоследниеАдресаКлючиСвязи.КлючСвязи Индексировать по ВТ_ПоследниеАдресаКлючиСвязи.КлючСвязи, МАКСИМУМ(ВТ_ЗаданиеНаПеревозкуСтроки.НомерСтроки) ; ////////////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ЗаданиеНаПеревозкуСтроки.Адрес КАК АдресДоставки, ВТ_ЗаданиеНаПеревозкуСтроки.АдресЗначенияПолей КАК АдресДоставкиЗначенияПолей, ВТ_ПоследниеЗоныПоАдресам.Зона КАК ЗонаДоставки, ВТ_ЗаданиеНаПеревозкуСтроки.ВремяС КАК ВремяДоставкиС, ВТ_ЗаданиеНаПеревозкуСтроки.ВремяПо КАК ВремяДоставкиПо, ВТ_ЗаданиеНаПеревозкуСтроки.ДополнительнаяИнформация КАК ДополнительнаяИнформацияПоДоставке ИЗ ВТ_ЗаданиеНаПеревозкуСтрокиИндексКлючСвязи КАК ВТ_ЗаданиеНаПеревозкуСтроки ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПоследниеАдресаКлючиСвязиНомераСтрок КАК ВТ_ПоследниеАдресаКлючиСвязиНомераСтрок ПО ВТ_ЗаданиеНаПеревозкуСтроки.КлючСвязи = ВТ_ПоследниеАдресаКлючиСвязиНомераСтрок.КлючСвязи И ВТ_ЗаданиеНаПеревозкуСтроки.НомерСтроки = ВТ_ПоследниеАдресаКлючиСвязиНомераСтрок.НомерСтроки ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПоследниеЗоныПоАдресам КАК ВТ_ПоследниеЗоныПоАдресам ПО (ВТ_ПоследниеЗоныПоАдресам.Адрес = ВТ_ЗаданиеНаПеревозкуСтроки.Адрес) УПОРЯДОЧИТЬ ПО ВТ_ЗаданиеНаПеревозкуСтроки.Дата УБЫВ, ВТ_ЗаданиеНаПеревозкуСтроки.Адрес |
|||
12
Волшебник
03.06.24
✎
13:32
|
Нет отборов по периоду
|
|||
13
Kukr47
03.06.24
✎
13:37
|
(12) я повторяю, мне не нужна помощь в оптимизации запроса, проблема в другом. Отборы по периоду тут не важны, тестовая база имеет те же данные что и рабочая.
|
|||
14
Волшебник
03.06.24
✎
14:34
|
(13) Перестаньте пудрить нам мозги. Для запроса на рабочей базе нужны отборы по периоду. Зачем Вам запрос по всей базе?
|
|||
15
Ненавижу 1С
03.06.24
✎
14:03
|
(13) я уже запутался в чем реальная проблема
|
|||
16
spiller26
03.06.24
✎
14:04
|
(11) А зачем два первых запроса одинаковых к одним и тем же таблицам?
ПОМЕСТИТЬ ВТ_ЗаданиеНаПеревозкуСтроки ПОМЕСТИТЬ ВТ_ЗаданиеНаПеревозкуСтрокиИндексКлючСвязи |
|||
17
spiller26
03.06.24
✎
14:08
|
(11) Это зачем?
ИЛИ &ПолучательОтправитель = НЕОПРЕДЕЛЕНО ИЛИ &Перевозчик = НЕОПРЕДЕЛЕНО |
|||
18
vis
03.06.24
✎
14:11
|
"ИЛИ" вообще следует, если можно, избегать
|
|||
19
spiller26
03.06.24
✎
14:14
|
И у вас как уже писали, чем больше будет данных с годами, тем больше по времени у вас он будет выполняться.
|
|||
20
Мультук
03.06.24
✎
14:32
|
(10)
Это запрос не лагает, этот запрос просто охреневает. Я конечно понимаю, что "КлючСвязи" guid и уникален шо ппц, но ёпрст, а) КлючСвязи не индексирован б) добавьте уже соединение по ссылка Документ.ЗаданиеНаПеревозку.Распоряжения КАК ЗаданиеНаПеревозкуРаспоряжения ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаПеревозку.Маршрут КАК ЗаданиеНаПеревозкуМаршрут ПО (ЗаданиеНаПеревозкуМаршрут.КлючСвязи = ЗаданиеНаПеревозкуРаспоряжения.КлючСвязи) И (ЗаданиеНаПеревозкуМаршрут.ССЫЛКА = ЗаданиеНаПеревозкуРаспоряжения.ССЫЛКА) |
|||
21
Kukr47
03.06.24
✎
14:55
|
(14) (15) поэтому я и не хотел скидывать запросы, т.к. они не имеют смысла, а лишь налетят хорошие люди которые хотят оптимизировать. Мой вопрос лишь в том почему одинаковые запросы выполняются по разному на рабочей и тестовой базе)
И да, с отборами по периоду тот же "Завис" на рабочей базе. (16) разная индексация, второй запрос делался методом тыка ради убирания зависаний. (17) запрос давно в базе, логику не трогал, так прописана. (19) я согласен про периоды, но вопрос в другом. (20) соединение по ссылке приводит к другому результату, логика запроса рушится. Запрос написан так как нужен. Вопрос в другом |
|||
22
Волшебник
03.06.24
✎
15:00
|
(21) Я так понял, что мы общаемся со стенкой...
Если есть различие, то "вводные" не одинаковые. У Вас тестовые базы равны рабочим по объёму данных и располагаются на тех же серверах? Там полное зеркалирование? |
|||
23
Ivan_495
03.06.24
✎
15:00
|
наверняка код sql разный, надо смотреть профайлер и сравнивать код
|
|||
24
Kukr47
03.06.24
✎
15:00
|
(22) сервера разные, данные равны
|
|||
25
Волшебник
03.06.24
✎
15:03
|
(24) "сервера разные"... Ну вот
|
|||
26
Волшебник
03.06.24
✎
15:03
|
Сделайте на рабочей базе такой же сервер, как на тестовой.
|
|||
27
Kukr47
03.06.24
✎
15:08
|
(26) Спасибо за ваши ответы, я вас понял
Можете разворачиваться от стенки, надеюсь они у вас не мягкие |
|||
28
Волшебник
модератор
03.06.24
✎
15:09
|
(27) Ага, поговори мне ещё тут...
|
|||
29
d4rkmesa
03.06.24
✎
16:23
|
(0) Разная статистика - разные результаты.
|
|||
30
palsergeich
04.06.24
✎
00:05
|
(0) судя по тексту запросов - то что этот запрос работал правильно, а сейчас сломался - было всего лишь вопросом времени.
У меня в нетленке и 15 летние запросы ломаются. Сначала разовые выбросы времени, потом все чаще. Первое время будет помогать сброс статистики, но в один не очень прекрасный момент и он перестанет помогать, были случаи когда просто так в середине дня частотный запрос просто в 90+% случаев стал выбирать плохой план. Ни обновлений ни расширений и поо факту вся опер деятельность фирмы встала и был спидран на оптимизацию. Как быть - ответ простой. Берем настраиваем ТЖ. И смотрим план не оптимального запроса и сравниваем его с оптимальным и долго думаем почему оптимизатор стал ошибаться и какие меры надо предпринять что бы избежать повторения. Скажу так, что иногда до сих пор фактический план удивляет меня, когда думаешь что проблема в чем то, а она оказывается совершенно в другом. Но это все долго, нудно, но в перспективе если понять как это разбирать - хорошо оплачивается |
|||
31
Kukr47
04.06.24
✎
12:32
|
(30) Спасибо, очень похоже, попробую
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |