Имя: Пароль:
1C
1С v8
Что лучше соединение или условие в запросе?
0 Конфигуратор1с
 
04.02.13
14:33
Есть у меня таблица Документ Товар. Мне нужно отобрать строки в расходных накладных с отбором по товарам и документам из таблицы.
Вот какой вариант правильнее Соединить две таблицы или сделать выборку из таблицы расходных накладных с условием где ссылка в (Выбрать документ из ВТ) и Товар в (Выбрать Товар из ВТ)?
1 GANR
 
04.02.13
14:35
(0) По-моему, В - это тоже замаскированное соединение. План запроса покажет.
2 Конфигуратор1с
 
04.02.13
14:37
(1) да я в скуле не силен к своему стыду(. Если есть ссылка как профайлером пользоваться для чайников, поделитесь будь ласка
3 GANR
 
04.02.13
14:38
sql-ex.ru
4 Лефмихалыч
 
04.02.13
14:39
(0) что по факту быстрее, то и правильнее
5 GANR
 
04.02.13
14:39
Можно радии интереса задолбить простенькие запросики и проанализировать. Из 1С транслировать - тяжелые связибудут.
6 AaNnDdRrEeYy
 
04.02.13
14:40
если есть возможность не использовать временные таблицы то не используй, они физически пишуться на диск а это медленно
7 GANR
 
04.02.13
14:44
(6) Не факт, кстати.
8 GANR
 
04.02.13
14:45
9 AaNnDdRrEeYy
 
04.02.13
14:45
что не факт? то что на диск физически пишутся или что запись на диск это медленно?
10 GANR
 
04.02.13
14:47
(9) На диск физически пишутся. Уверен?
11 AaNnDdRrEeYy
 
04.02.13
14:48
ну да пишуться, когда в запросе есть ПОМЕСТИТЬ
12 sapphire
 
04.02.13
14:51
(1) Проще выбрать сначала документы и к ним inner join по Ссылке и условие по номенклатуре.
13 alkov
 
04.02.13
14:54
(6) А вот посоны из 1С пишут, что вложенные запросы - зло, а временные таблицы рулят
14 GANR
 
04.02.13
14:55
(11) Может, все-таки, начиная с MS SQL 2005-2008 они в оперативе висят (если хватает)?
15 samozvanec
 
04.02.13
14:56
(11) это если не хватает памяти
16 Рыжий Лис
 
04.02.13
14:56
(0) Результат этих двух вариантов будет разный. Пример:
Док1 Ном2
Док2 Ном1

А в жизни в Док1 продается Ном1, а в Док2 - Ном2.
17 Sammo
 
04.02.13
14:58
(6) Временные таблицы позволяют управлять планом скулевского запроса. Что может приводить к более оптимальному его выполнению
Имхо в 0 - без разницы. Но я бы делал через соединение, т.к. в некоторых частных случаях при корявой статистике у меня получался диковатый запрос при использовании В (Выбрать). Использование соединений/временных таблиц проблему решало
18 AaNnDdRrEeYy
 
04.02.13
15:00
(14) можешь сам проверить фигани во временную таблицу побольше записей и смотри на файл tempdb.mdf (временная база данных sql) файлик будет расти, мелкие может и висят но крупные точно пишуться
19 GANR
 
04.02.13
15:03
(18) На нормальных серваках от 20 Гигов оперативы. Это ведь ещё и настраивать можно. Не знаю правда или нет, мне сказали, что у кого-то аж база целиком в оперативе висит (на сказку похоже, что-то).
20 Конфигуратор1с
 
04.02.13
15:04
всем спасибо, буду делать по ходу соединением. Просто думал есть какая рекомендация от 1с где написано как кошернее)
21 alkov
 
04.02.13
15:05
(20) Есть, например, такие рекомендации: http://kb.1c.ru/articleView.jsp?id=44
22 Конфигуратор1с
 
04.02.13
15:08
Да. еще такой вопрос. знакомый скльщик утверждает что задавать условие в соединениях єффективнее чем в разделе где. Для 1с это тоже актуально?
23 Конфигуратор1с
 
04.02.13
15:09
(21) спасибо огромное.