Имя: Пароль:
1C
1С v8
Запрос выполняется долго, но консоль показывает нормальное время
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) Спасибо, очень похоже, попробую
Ошибка? Это не ошибка, это системная функция.