Имя: Пароль:
1C
1С v8
Вопрос по запросу ОБЪЕДИНИТЬ
0 ksergey
 
05.10.18
15:55
Добрый день

Платформа 8.3.7
Конфигурация УТ 10.3 SQL  сильно дописана
Справочник.Номенклатура содержит 4 реквизита  значений Артикула:
-реквзит Артикул
-реквизит АртикулДоп
-ТЧ Артикулы.Артикул
-ТЧ АртикулыДоп.Артикул


Сталкнулся с одной ситуацией, связанной с использованием запроса в поиске товара по артикулу.
Пытаясь как-то "ускорить" работу Запроса1  немного переделал  его в Запрос2.

Есть 2 схожих запроса (через ОБЪЕДИНИТЬ из 4-х источников),
в которых выбирается Номенклатура по условию  Артикул ПОДОБНО &Отбор    
где условие отбора    Отбор = "%"+стрПоиска+"%";


Запрос1.Текст =
    "  ВЫБРАТЬ Н1.Ссылка КАК Ссылка
    |    ИЗ Справочник.Номенклатура КАК Н1
    |    ГДЕ  Н1.Артикул + ""|"" + Н1.АртикулДоп ПОДОБНО &Отбор
    |    
    |    ОБЪЕДИНИТЬ
    |    
    |    ВЫБРАТЬ Н2.Ссылка
    |    ИЗ  Справочник.Номенклатура.Артикулы КАК Н2
    |    ГДЕ  Н2.Артикул ПОДОБНО &Отбор
    |    
    |    ОБЪЕДИНИТЬ
    |    
    |    ВЫБРАТЬ Н3.Ссылка
    |    ИЗ Справочник.Номенклатура.АртикулыДоп КАК Н3
    |    ГДЕ  Н3.Артикул ПОДОБНО &Отбор";


Запрос2.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 100
    |    ВЗ.Ссылка
    |ИЗ
    |    (ВЫБРАТЬ Н1.Ссылка КАК Ссылка
    |    ИЗ Справочник.Номенклатура КАК Н1
    |    ГДЕ  Н1.Артикул + ""|"" + Н1.АртикулДоп ПОДОБНО &Отбор
    |    
    |    ОБЪЕДИНИТЬ
    |    
    |    ВЫБРАТЬ Н2.Ссылка
    |    ИЗ Справочник.Номенклатура.Артикулы КАК Н2
    |    ГДЕ  Н2.Артикул ПОДОБНО &Отбор
    |    
    |    ОБЪЕДИНИТЬ
    |    
    |    ВЫБРАТЬ Н3.Ссылка
    |    ИЗ Справочник.Номенклатура.АртикулыДоп КАК Н3
    |    ГДЕ  Н3.Артикул ПОДОБНО &Отбор)  КАК ВЗ";



Мне не совсем понятны результаты замеров скорости этих запросов.

Ниже приведены результаты замера выполнения запросов на базе 1,3млн. записей
при различных (по длине) строках поиска артикула:

стрПоиска = 51248220072   <--- ПОЛНОЕ СОВПАДЕНИЕ С АРТИКУЛОМ
Запрос1: выбрано записей 3  за 1,344 сек
Запрос2: выбрано записей 3  за 6,375 сек

5124822007 =====================
Запрос1: выбрано записей 3  за 1, 906
Запрос2: выбрано записей 3  за 4, 625

512482200 =====================
Запрос1: выбрано записей 3  за 1, 796
Запрос2: выбрано записей 3  за 5, 000

51248220 =====================
Запрос1: выбрано записей 3  за 1, 141
Запрос2: выбрано записей 3  за 6, 063

5124822 =====================
Запрос1: выбрано записей 22  за 1, 140
Запрос2: выбрано записей 22  за 4, 626

512482 =====================
Запрос1: выбрано записей 74  за 1, 406
Запрос2: выбрано записей 74  за 5, 016

51248 =====================
Запрос1: выбрано записей 200  за 1, 297
Запрос2: выбрано записей 100  за 3, 969

5124 =====================
Запрос1: выбрано записей 1 410  за 1, 297
Запрос2: выбрано записей 100   за 0,500

512 =====================
Запрос1: выбрано записей 17 304  за 1, 688
Запрос2: выбрано записей 100  за 0,125

51 =====================
Запрос1: выбрано записей 188 826  за 2, 344
Запрос2: выбрано записей 100  за 0,016

5 =====================
Запрос1: выбрано записей 958 206  за 9, 048
Запрос2: выбрано записей 100  за  0,031

1 =====================
Запрос1: выбрано записей 1 333 697  за 11, 016
Запрос2: выбрано записей 100  за  0,016


Вопрос ко всем - объясните почему такое поведение Запрос2  для  "длинной" строки поиска?  
(это результаты из верхней части списка - когда Запрос1 отрабатывает быстрее Запрос2)

Заранее благодарен
1 shuhard
 
05.10.18
15:58
(0)[почему такое поведение]
посмотри запрос на стороне сиквела - узнаешь
2 Ёпрст
 
05.10.18
16:21
хотя бы все воткнул в объединить, ну и в выбрать первые воткнул упорядочивание