Имя: Пароль:
1C
 
ЛЕВОЕ и ВНУТРЕННЕЕ СОЕДИНЕНИЕ
0 Ненавижу 1С
 
гуру
07.05.09
12:52
1. Внутреннее 0% (0)
2. Левое 0% (0)
3. как обычно 0% (0)
Всего мнений: 0

понятно, что это 2 разные вещи, но допустим мы уверены (исходя из условий), что в результате получим одну и ту же выборку
что быстрее работает?
1 Ненавижу 1С
 
гуру
07.05.09
12:52
вроде как

Внутреннее
2 skunk
 
07.05.09
12:53
какие условия дают такую гарантию?
3 Ненавижу 1С
 
гуру
07.05.09
12:59
(2) логика работы
допустим 2 регистра двигаются одним и тем же документом, набор товары и регистратор у них равные
ИЗ РегистрНакопления.Регистр1 КАК Регистр1
 ЛЕВОЕ (ВНУТРЕННЕЕ) СОЕДИНЕНИЕ РегистрНакопления.Регистр2 КАК Регистр2
 ПО (Регистр1.Регистратор=Регистр2.Регистратор) и (Регистр1.Товар=Регистр2.Товар)
4 hhhh
 
07.05.09
12:59
если

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

Тогда и ПОЛНОЕ СОЕДИНЕНИЕ даст ту же выборку. Поэтому надо делать ПОЛНОЕ, потому что там проверок меньше.
5 Ненавижу 1С
 
гуру
07.05.09
13:00
(4) полное, имхо, медленнее всего работает
6 JustBeFree
 
07.05.09
13:00
Потому что оно левое

Левое
7 hhhh
 
07.05.09
13:00
(5) с чего это?
8 eklmn
 
гуру
07.05.09
13:00
imho

Левое
9 Shurjk
 
07.05.09
13:01
И что по итогам голосования выигравший механизм соединения будет признан самым быстрым?
10 H A D G E H O G s
 
07.05.09
13:02
Потому что мозх использовать надо.

Левое
11 H A D G E H O G s
 
07.05.09
13:03
(4) Нет.
12 hhhh
 
07.05.09
13:04
(7)+ в ЛЕВОМ и ВНУТРЕННЕМ присутствует проверка на наличие записей, а в ПОЛНОМ ничего не проверяется, сразу всё напрямую идет в конечную выборку. Значит ПОЛНОЕ быстрее, а самое тормозное ВНУТРЕННЕЕ, там 2 проверки.
13 H A D G E H O G s
 
07.05.09
13:04
Хотяяя.
Может SQL и мудрее.
Если мы делаем ВНУТРЕННЕЕ и выбираем только изх 1-ой таблицы, то он 2-ую фильтровать не будет???
14 Ненавижу 1С
 
гуру
07.05.09
13:05
+ по полям соединения есть индексы
15 hhhh
 
07.05.09
13:05
(14) в условии задачи про SQL ничего не сказано.
16 hhhh
 
07.05.09
13:06
(15) к (13)
17 Ненавижу 1С
 
гуру
07.05.09
13:06
+ база SQL
18 MSensey
 
07.05.09
13:15
(12) какие две проверки во внутреннем соединении?
19 Найлло
 
07.05.09
13:15
Потому как мало ли че. Вдруг по одному из регистров что-то не так пошло и там записи все таки нет. Как пример два регистра партий- по упр и бух учету. Регистраторы одни и те же, но по некоторым позициям движения могли не пройти из-за нехватка остатков.

К чему я- логика логикой, но всякое может быть. Поэтому лично я из двух по сути одинаковых регистров делаю один основным- а второй присоединяю слево.

Левое
20 Ненавижу 1С
 
гуру
07.05.09
13:32
вообще при такой постановке разница между ними скорее всего отсутствует практически.
21 AHgpuXa
 
07.05.09
13:37
Left join работает медленей Inner join, а inner join работает медленней обычного соединения через запятую, с вынесением условия в WHERE.
Поэтому в твоем случае

как обычно
22 acsent
 
07.05.09
14:46
Указывая внутреннее соединение, оптимизатор может сам выбрать одну из таблиц основной
23 Ненавижу 1С
 
гуру
08.05.09
12:38
смотрим
v8: Помогите с запросом

так что 1С использует по возможности (для обязательных реквизитов) "ВНУТРЕННЕЕ" когда пишем через точку