Имя: Пароль:
1C
1С v8
Анализ SQL запросов из 1С к СУБД
0 mzelensky
 
11.01.13
11:09
Доброго всем!
Сейчас встал один спор про оптимизацию запроса, а именно:

Если делаем выборку данных  и потом левым соединением цепляем вложенный запрос, например

Выбрать Т1.1
Т2.1
из Т1
Левое соединение (
выбрать т3.1
из Т3
) как т2
по Т1.1 = т2.1

Так вот:
1) Сколько запросов пошлет 1С-ка менеджеру СУБД (в файловом и серверном вариантах)
2) как будет выглядеть SQL запрос (в файловом и серверном вариантах)


П.С. + подскажите, где и как можно увидеть/проанализировать эти самые "преобразованные" SQL запросы ?!
1 mzelensky
 
11.01.13
11:10
(0) есть какие-нить обработки или еще что-то, где  можно подать на вход 1С-кий запрос, а на выходе получить "преобразованный" SQL-запрос ?!
2 Fragster
 
гуру
11.01.13
11:11
1) минимум 1 запрос
2) есть куча тулзов, от встроенного в скуль профайлера и до техножурнала и спец инструментов
3 Fragster
 
гуру
11.01.13
11:11
(1) есть
4 el-gamberro
 
11.01.13
11:12
1. 1 запрос
2. Примерно так и будет
Насчет запросов в файловом варианте... как бы тебе это сказать...
5 sda553
 
11.01.13
11:13
sql профайлер поможет тебе увидеть все что посылает 1с в sql
6 mzelensky
 
11.01.13
11:13
(2) Тут понятно что минимум 1. от чего зависит количество? как это заранее предсказать, чтобы более оптимально запрос написать?!
7 mzelensky
 
11.01.13
11:14
(5) а если файловый вариант базы?!
8 mzelensky
 
11.01.13
11:16
Просто спор встал в следующем:

Мол если делать соединение с вложенным запросом. то 1С-ка сперва пошлет СУБД левую таблицу, получит результат. Затем возьмет правую таблицу (вложенный запрос) - пошел его в менеджре СУБД, получит результат. А уж потом будет оперировать этими результатами.

Вопрос на сколько это имеет место в действительности!?
Т.е. какое действие на какой стороне происходит и в какой последовательности?!
9 Fragster
 
гуру
11.01.13
11:19
(6) ну, если там есть запрос к таблице остатков - предварительно будет еще запрос к таблице, где хранятся даты рассчитанных итогов.
10 H A D G E H O G s
 
11.01.13
11:21
(8) нинасколько.
11 Fragster
 
гуру
11.01.13
11:22
(8) в скуле тоже есть вложенные запросы, а файловая покрыта мраком
12 H A D G E H O G s
 
11.01.13
11:22
(8) SQL все сделает сам.
2 вложенными циклами.
13 mzelensky
 
11.01.13
11:23
(9) ок, давай чуть более точечно. Допустим:

Выбрать Т1.1
Т2.1
из Т1
Левое соединение (
выбрать т3.1
из Т3
) как т2
по Т1.1 = т2.1

Где Т1 - таблица "Справочник.Контрагенты"
т3 - таблица "Справочник.ДоговорКонтрагента.ТЧ" - ну т.е. это какая-то табличная часть справочника, которая выбирается во вложенном запросе, затем группируется и этот результат уже соединяется с таблицей Т1.


Вот в данном случае сколько будет запросов из 1С к СУБД, какие данные где будут обрабатываться (т.е. все будет обработано в СУБД или часть в СУБД, а часть в 1С).
14 Fragster
 
гуру
11.01.13
11:24
(13) 1
15 mzelensky
 
11.01.13
11:25
(10) Где это почитать можно?!

Просто сколько людей столько и мнений. Уже много раз подымались подобные темы + общаясь с разными людьми слышу разные (порой совсем разные) сведения.

"Так где же истина, брат" (с)
16 H A D G E H O G s
 
11.01.13
11:27
(15) Достаточно подумать логически.
17 Fragster
 
гуру
11.01.13
11:27
(15) открой профайлер и посмотри - на многое откроются глаза
18 mzelensky
 
11.01.13
11:29
(17) а где его там найти?! это в Менеджменте?
19 H A D G E H O G s
 
11.01.13
11:29
(15) Ну или запустить Профайлер, посмотреть, как 1С строит 1 запрос к SQL в случае (0), как 1С строит доп. запросы к таблице метаданных, выбирая значения перечислений, строит временные таблицы при получении ВТ Остатки.

"Много неясного в странной стране,
Можно запутаться и заблудиться.
Даже мурашки ползут по спине,
Если представить, что может случиться.
Вдруг будет пропасть и нужен прыжок.
Струсишь ли сразу? Прыгнешь ли смело?
А? э... так-то, дружок,
В этом-то все и дело."
20 H A D G E H O G s
 
11.01.13
11:30
(18) ms sql profiler - погугли.
Это дает 100500 к понимаю 1С.
21 H A D G E H O G s
 
11.01.13
11:31
Самое забавное смотреть на партянку разыменования ДокументСсылка.
22 mzelensky
 
11.01.13
11:32
(19) вопросы "оптимизации" и попытки осознания логики работы системы порой приводят в ступор...
23 mzelensky
 
11.01.13
11:32
(20) ок, спасибо!
24 H A D G E H O G s
 
11.01.13
11:35
(22) Система работает очень логично и оптимально.
25 mzelensky
 
11.01.13
11:37
(24) она то может и работает, но объяснить "как именно она это делает" никто толком не может.
26 Fragster
 
гуру
11.01.13
11:39
(25) кто может - тот не задает вопросов, ибо ему все понятно
27 Fragster
 
гуру
11.01.13
11:40
вот небольшое погружение на хабре
http://habrahabr.ru/post/164913/
28 el-gamberro
 
11.01.13
12:05
(22) то что ты оптимизация в кавычках написал это очень правильно :)))
потом что force order и hash join ты никогда в 1ском запросе не напишешь
29 МихаилМ
 
11.01.13
12:47
в (27)
больше дезинформации, чем информации.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший