|   |   | 
| 
 | Разная скорость выполнения запроса | ☑ | ||
|---|---|---|---|---|
| 0
    
        Rpik 02.03.23✎ 20:23 | 
        Подскажите в чем может быть огромная разница в выполнении двух запросов. Отличаются они только отбором. В первом Запросе отбор идет по "Партнер", а во втором по "Грузополучатель".
 Первый запрос выполняется за 0,022 секунды, а второй за 3,425 секунды!!!! -------------1------------- ВЫБРАТЬ ЗаказКлиента.Ссылка КАК Ссылка, ЗаказКлиента.СуммаДокумента КАК СуммаДокумента, ЗаказКлиента.Склад КАК Склад, ЗаказКлиента.ДатаОтгрузки КАК ДатаОтгрузки ИЗ Документ.ЗаказКлиента КАК ЗаказКлиента ГДЕ ЗаказКлиента.ДатаОтгрузки >= ДАТАВРЕМЯ(2023, 1, 1) И ЗаказКлиента.ДатаОтгрузки <= ДАТАВРЕМЯ(2023, 12, 31) И ЗаказКлиента.Партнер = &Партнер И ЗаказКлиента.Проведен = ИСТИНА --------------2------------------ ВЫБРАТЬ ЗаказКлиента.Ссылка КАК Ссылка, ЗаказКлиента.СуммаДокумента КАК СуммаДокумента, ЗаказКлиента.Склад КАК Склад, ЗаказКлиента.ДатаОтгрузки КАК ДатаОтгрузки ИЗ Документ.ЗаказКлиента КАК ЗаказКлиента ГДЕ ЗаказКлиента.ДатаОтгрузки >= ДАТАВРЕМЯ(2023, 1, 1) И ЗаказКлиента.ДатаОтгрузки <= ДАТАВРЕМЯ(2023, 12, 31) И ЗаказКлиента.Грузополучатель = &Грузоплучатель И ЗаказКлиента.Проведен = ИСТИНА | |||
| 1
    
        Мультук гуру 02.03.23✎ 21:56 | 
        (0) 
 1) Сколько раз выполнялись запросы ? Это среднее время ? 2) Сколько записей возвращают запросы? Если первый 10 и второй 10 000, то ... 3) Можно не полениться и включить в консоле запросов "Показывать план". 4) Можно глянуть, а вдруг "кто-то" создал по "Партнер" индекс | |||
| 2
    
        Garykom гуру 02.03.23✎ 22:02 | 
        (0) Все просто
 1-й запрос выполняется очень часто, СУБД уже оптимизировалась под него, по сути из кэша 2-й очень редко | |||
| 3
    
        Garykom гуру 02.03.23✎ 22:03 | 
        (2)+ это если исключен п.4 из (1)     | |||
| 4
    
        Garykom гуру 02.03.23✎ 22:03 | 
        Ну или тупо поле Грузополучатель у почти всех клиентов NULL ))     | |||
| 5
    
        Garykom гуру 02.03.23✎ 22:04 | 
        (4) *у почти всех ЗаказКлиента     | |||
| 6
    
        rudnitskij 02.03.23✎ 22:17 | 
        (4) или составного типа     | |||
| 7
    
        Garykom гуру 02.03.23✎ 22:21 | 
        (6) вариант     | |||
| 8
    
        Ivan_495 naïve 02.03.23✎ 22:25 | 
        а без этих отборов запрос за сколько проходит?     | |||
| 9
    
        Жан Пердежон 03.03.23✎ 00:29 | 
        (0) план запроса посмотри;
 Это УТ/ERP? По партнеру нет индекса разе? | |||
| 10
    
        Rpik 03.03.23✎ 08:15 | 
        (1) 1) Сколько раз выполнялись запросы ? Это среднее время ?
 сотню раз 2) Сколько записей возвращают запросы? Если первый 10 и второй 10 000, то ... 1-й 12, 2-й 40 | |||
| 11
    
        Rpik 03.03.23✎ 08:16 | 
        (2) Файловая база тоже умеет "подстраиваться" (оптимизироваться) или в отличие от СУБД нужто что-то делать ручками?     | |||
| 12
    
        Rpik 03.03.23✎ 08:17 | 
        (4) >>Ну или тупо поле Грузополучатель у почти всех клиентов NULL ))
 а вот тут в самую точку. у 95% заказов поле грузополучатель не заполнено. Поле имеет тип "Контрагент" | |||
| 13
    
        Rpik 03.03.23✎ 08:20 | 
        (8) >> а без этих отборов запрос за сколько проходит?
 без отбора по грузополучателю запрос выполняется 0,5 секунды на файловой базе. количество выборки 10к+ | |||
| 14
    
        Rpik 03.03.23✎ 08:21 | 
        (9) >Это УТ/ERP? По партнеру нет индекса разе?
 это КА2, пойду искать инфу как посмотреть существующие индексы | |||
| 15
    
        lodger 03.03.23✎ 10:31 | 
        (14) открываешь документ в конфиге, среди реквизитов находишь Партнер, смортишь у него свойство Индексировать     | |||
| 16
    
        Rpik 03.03.23✎ 10:47 | 
        (15) Спасибо, Оба реквизита не индексируются     | |||
| 17
    
        magicSan 03.03.23✎ 10:51 | 
        (12) и с чего бы это влиять на скорость?     | |||
| 18
    
        Rpik 03.03.23✎ 10:56 | 
        (17) Не совсем вас понял. количество null не влияет на скорость? или это был сарказм и это влияет напрямую?     | |||
| 19
    
        Адинэснег 03.03.23✎ 11:07 | 
        (12) тогда там пустая ссылка     | |||
| 20
    
        Адинэснег 03.03.23✎ 11:07 | 
        по 100 раз хотяб выполни, и среднее посчитай     | |||
| 21
    
        magicSan 03.03.23✎ 11:08 | 
        (18) во первых там пустая ссылка, во вторых если бы ыбл нулл с чего ему влять на скорость?     | |||
| 22
    
        magicSan 03.03.23✎ 11:09 | 
        (20) там в любом случае будет полное сканирование,  чтоб увидеть кэш достаточно одного раза     | |||
| 23
    
        magicSan 03.03.23✎ 11:11 | 
        (18) скока документов в базе? У тебя не скорость выполнения запроса показывает а скорость вывода скорее всего.     | |||
| 24
    
        Повелитель 03.03.23✎ 11:11 | 
        (0) Думаю Партнер проиндексирован, а грузополучатель Нет     | |||
| 25
    
        Адинэснег 03.03.23✎ 11:15 | 
        (23) щас окажется вывод 3 записей vs 3 млн     | |||
| 26
    
        Адинэснег 03.03.23✎ 11:15 | 
        а запрос одинаково +/- работал)     | |||
| 27
    
        Rpik 03.03.23✎ 11:16 | 
        по обоим реквизитам индекса НЕТ
 Всего документов около 50к в результате первого запроса выводится 159 записей(скорость 0,016 сек), в результате второго 14(скорость 3,071 сек) | |||
| 28
    
        Ivan_495 naïve 03.03.23✎ 11:21 | 
        если 0.5 устраивает, то результат без отборов во врем табл, а в ней уже отбор. или смотри запрос в sql профайлере     | |||
| 29
    
        magicSan 03.03.23✎ 11:26 | 
        (28) чо там на него смотреть? там тоже самое     | |||
| 30
    
        magicSan 03.03.23✎ 11:27 | 
        (27) серверм мс?     | |||
| 31
    
        НЕА123 03.03.23✎ 11:30 | 
        ставлю на составной тип. все-таки.
 попробуй ВЫРАЗИТЬ(ЗаказКлиента.Грузополучатель КАК Справочник.Контрагенты) | |||
| 32
    
        magicSan 03.03.23✎ 11:31 | 
        (31) ветку читай перед ставками (12
 ) | |||
| 33
    
        НЕА123 03.03.23✎ 11:35 | 
        (32)
 читал. но тут всему верить... как измерял скорость тоже непонятно. | |||
| 34
    
        Rpik 03.03.23✎ 11:35 | 
        (28) через виртуальную таблицу получилось даже дольше. примерно на 10%     | |||
| 35
    
        Ivan_495 naïve 03.03.23✎ 11:38 | 
        контрагенты и партнеры используется?     | |||
| 36
    
        Rpik 03.03.23✎ 11:46 | 
        (35) в каком смысле используются? Пользователями? в КА2 пользователям доступен справочник Партнеры. справочник "Контрагенты", как я понимаю, заполняется системой сам.     | |||
| 37
    
        Ботаник Гарден Меран 03.03.23✎ 11:51 | 
        КритерийОтбора     | |||
| 38
    
        Rpik 03.03.23✎ 12:00 | 
        (37) в конфигурации действительно присутствует КритерииОтбора.ДокументыПоПартнеру и в нем есть Реквизит Документ.ЗаказКлиента.Реквизит.Партнер
 Насколько он влияет на мой запрос затрудняюсь ответить. Я все же думал он немного для других вещей (или нет?) | |||
| 39
    
        magicSan 03.03.23✎ 12:01 | 
        (38) ни на сколько     | |||
| 40
    
        Ботаник Гарден Меран 03.03.23✎ 12:02 | 
        "При включении в конфигурацию критерия отбора система не создает никаких таблиц, однако для оптимизации поиска создается индекс по каждому реквизиту, который указан в составе критериев отбора."
 RTFM | |||
| 41
    
        magicSan 03.03.23✎ 12:15 | 
        (40) и для того чтоб его использовать надо использовать критерии отбора логика     | |||
| 42
    
        magicSan 03.03.23✎ 12:16 | 
        хотя .... (0) глянь ПолучитьСтруктуруХраненияБазыДанных()     | |||
| 43
    
        timurhv 03.03.23✎ 12:37 | 
        (27) Уверены? Скорее всего, он есть в критериях отбора     | |||
| 44
    
        Rpik 03.03.23✎ 13:04 | 
        Скорее всего вы правы. все дело в критериях отбора, а значит значительно ускорить данный запрос, простой оптимизацией нельзя     | |||
| 45
    
        magicSan 03.03.23✎ 13:16 | 
        (44) попробуй так
 ГДЕ ЗаказКлиента.Грузополучатель = &Грузоплучатель и ЗаказКлиента.Проведен = ИСТИНА и ЗаказКлиента.ДатаОтгрузки >= ДАТАВРЕМЯ(2023, 1, 1) И ЗаказКлиента.ДатаОтгрузки <= ДАТАВРЕМЯ(2023, 12, 31) (0) на 25 тысячах отработатывает мгновенно | |||
| 46
    
        Кир Пластелинин 03.03.23✎ 13:17 | 
        (40) почему? если рассматривать с точки зрения субд, то при добавлении реквизита в критерии отбора будет создан индекс для таблицы (при условии, что для него не стояло индексирование изначально). а там уж оптимизатор будет строить план запроса исходя из этого     | |||
| 47
    
        Rpik 03.03.23✎ 13:21 | 
        (45) пробовал разницы нет. да и "почти мгновенно" это сколько в секундах?     | |||
| 48
    
        Кир Пластелинин 03.03.23✎ 13:28 | 
        (47) да проиндексируйте уже этот реквизит в экспериментальных целях на тестовом контуре и сделайте замеры     | |||
| 49
    
        Rpik 03.03.23✎ 13:38 | 
        (48) после индексации результаты по скорости выполнения выровнялись.
 всем спасибо | |||
| 50
    
        magicSan 03.03.23✎ 13:42 | 
        (47) нету секуд - мгновенно     | |||
| 51
    
        Rpik 03.03.23✎ 13:45 | 
        (50) "нету секуд - мгновенно" согласен, но вы же написали "почти мгновенно")     | |||
| 52
    
        ptiz 03.03.23✎ 15:37 | 
        (44) Добавь отбор по Партнеру дополнительно к отбору по Грузополучателю.     | |||
| 53
    
        trad 03.03.23✎ 16:12 | 
        (0) в (37) правильный ответ
 (38), (39) - влияет | |||
| 54
    
        magicSan 03.03.23✎ 19:41 | 
        (53) да , (40) красава "При включении в конфигурацию критерия отбора система не создает никаких таблиц, однако для оптимизации поиска создается индекс по каждому реквизиту, который указан в составе критериев отбора."     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |