|
Запросы. В списке VS соединение | ☑ | ||
|---|---|---|---|---|
|
0
DirecTwiX
21.03.13
✎
23:59
|
Вот тут (http://www.forum.mista.ru/topic.php?upd&id=657511) мне сказали, что в SQL проверка IN выполняется для каждой строки, и что надо использовать соединение. В 1С дела обстоят так же?
Предупрежден - значит вооружен =) |
|||
|
1
H A D G E H O G s
22.03.13
✎
00:15
|
Брешуть.
|
|||
|
2
H A D G E H O G s
22.03.13
✎
00:17
|
Тоже самое внутреннее соединение будет.
|
|||
|
3
Sorm
22.03.13
✎
00:21
|
(2) С чем - с подзапросом, который формирует список значений?
|
|||
|
4
H A D G E H O G s
22.03.13
✎
00:28
|
(3) Да
|
|||
|
5
H A D G E H O G s
22.03.13
✎
00:29
|
ВЫБРАТЬ
1 КАК Поле1 ИЗ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах ГДЕ ТоварыНаСкладах.Номенклатура В (ВЫБРАТЬ Номенклатура.Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура) дает план: StmtText -------- Merge Join(Inner Join, MERGE:([T2].[_IDRRef])=([T1].[_Fld20472RRef]), RESIDUAL:([KATAP].[dbo].[_AccumRg20470].[_Fld20472RRef] as [T1].[_Fld20472RRef]=[KATAP].[dbo].[_Reference152].[_IDRRef] as [T2].[_IDRRef])) |--Clustered Index Scan(OBJECT:([KATAP].[dbo].[_Reference152].[PK___Referen__AC8ED0C40972373D] AS [T2]), ORDERED FORWARD) |--Index Scan(OBJECT:([KATAP].[dbo].[_AccumRg20470].[_Accum20470_ByDims20478_RTRN] AS [T1]), ORDERED FORWARD) |
|||
|
6
H A D G E H O G s
22.03.13
✎
00:30
|
Который аналогичен запросу:
ВЫБРАТЬ 1 КАК Поле1 ИЗ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары ПО ТоварыНаСкладах.Номенклатура = Товары.Ссылка |
|||
|
7
H A D G E H O G s
22.03.13
✎
00:36
|
||||
|
8
Лефмихалыч
22.03.13
✎
00:38
|
(7) ну, не то, чтобы прямо совсем бред. Ты же не станешь утверждать, что план запроса всегда будет таким.
|
|||
|
9
Sorm
22.03.13
✎
00:42
|
(7) Надо проверить. При работе с большими БД (ну, несколько сотен гигабайт, терабайты) IN я всегда менял на временные таблицы, получал прирост скорости , иногда в разы. Планы не смотрел, насколько я знаю, сравнение в IN происходит последовательно с каждым элементом, при условии испльзования запроса - запрос выполняется.
|
|||
|
10
H A D G E H O G s
22.03.13
✎
00:45
|
(9) "сравнение в IN происходит последовательно с каждым элементом"
А как дела обстоят при Соединении? |
|||
|
11
Sorm
22.03.13
✎
00:55
|
(10) Если я правильно помню, merge join для In таки невозможен, только nested loop join, как раз последовательное сравнение, да ещё с выполнением запроса.
|
|||
|
12
Sammo
22.03.13
✎
04:55
|
Я видел такое мнение для скуля. Ссылку сейчас не дам.
Для 1с ситуация может быть иной |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |