Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Оптимизация запросов (внутреннее соединение vs. секция ГДЕ)

Оптимизация запросов (внутреннее соединение vs. секция ГДЕ)
Я
   Pandoch
 
30.07.20 - 17:03
Коллеги, добрый день. Стоит задача оптимизировать лютый многопакетный запрос. И приходится обращать внимание на каждую мелочь. Верно ли, что быстрее будет работать внутреннее соединение с таблицей, по которой нужно отсеять записи, чем брать вторую таблицу (Т1) полностью, а потом на секции ГДЕ писать условие по вхождению в таблицу-отбор Т2?
ПРИМЕР:

ВЫБРАТЬ Т1.Основание ИЗ документ.Жалоба как Т1
ГДЕ
Т1.Основание в (выбрать Т2.Закупка из Т2);

ПРОТИВ:

ВЫБРАТЬ Т1.Основание
ИЗ документ.Жалоба как Т1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Т2 Как Т2 ПО Т1.Основание = Т2.Закупка;
   Ёпрст
 
1 - 30.07.20 - 17:05
(0) нет не верно
   Ёпрст
 
2 - 30.07.20 - 17:07
а лютый многопакетный запрос нужно ловить в профайлере и смотреть план выполнения каждого запроса и делать выводы
   Pandoch
 
3 - 30.07.20 - 17:08
(1) можно пожалуйста поподробнее) секция ГДЕ ведь накладывается сверху на всю таблицу Т1. То есть больше записей обрабатываться будет
   Garykom
 
4 - 30.07.20 - 17:15
(3) На практике все зависит от sql сервера (это уже после того как сервер 1С запрос оттранслировал) как он отработает.

Там у разрабов sql серверов/движков война же фактически кто лучше прооптимизирует самые хреновые запросы.

Так что только (2) и пытаться менять лютый запрос делая тесты
   Ёпрст
 
5 - 30.07.20 - 17:18
(3) в данном случае, оба запроса с большей долей вероятности дадут один план выполнения запроса.
А так, сравнивай планы. И..это больше религиозная война, иннер джоин или where в таком запросе
   Pandoch
 
6 - 30.07.20 - 17:18
(4) Можете дать название софта, чего за профайлер? Ни разу не пользовалась таким методом)
   Ёпрст
 
7 - 30.07.20 - 17:19
(6) у тя файловая база что ле ?)
   Pandoch
 
8 - 30.07.20 - 17:19
Серверная
   NcSteel
 
9 - 30.07.20 - 17:21
http://catalog.mista.ru/1c/articles/291874/

статейка первая в гугле
   Ёпрст
 
10 - 30.07.20 - 17:21
(8) и формат базы какой sql/постриги ?
   Pandoch
 
11 - 30.07.20 - 17:21
sql
   Pandoch
 
12 - 30.07.20 - 17:22
(9) пасиб, будем смотреть
   NcSteel
 
13 - 30.07.20 - 17:22
(11) Это понятно, но какой?
   Pandoch
 
14 - 30.07.20 - 17:25
(13) у меня нету доступов, там сервера все закрыты, секретности
   Ёпрст
 
15 - 30.07.20 - 17:28
(14) ну тогда настраивай ТЖ и смотри там, или сымотри через ИР, там тоже есть план. Только его лучше потом смотреть в SentryOnePlanExplorer
   Конструктор1С
 
16 - 30.07.20 - 19:52
(0) случаем не по составным полям соединяешь?
   ILM
 
17 - 30.07.20 - 20:13
У меня был запрос сборки бдр за два года с исключением вхо написанный 8 лет назад, который делал 156 временных таблиц, длиной 6500 строк кода и выполнялся 130 секунд. Спустя два года сделал рефакторинг и он стал 2500 строк и выполнялся уже 30 секунд. Недавно, месяца два назад понадобилось внести правки и полностью переписал запрос сейчас он меньше 1500 строк и выполняется 7-10 секунд. Основной упор был сделан на получение максимума данных из таблицы за один проход по ней, так что не важна секция "где" или "внутреннее соединение" если к огромной таблице обращаешься 10 или 20 раз. Лучше хорошо подумать и сделать максимально эффективно за один раз.
   acht
 
18 - 30.07.20 - 20:18
(0) Это разные запросы. Второй может размножить строки при неуникальности данных.
   H A D G E H O G s
 
19 - 30.07.20 - 20:21
(18) обычно не размноживает :-)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.