Имя: Пароль:
1C
1С v8
Уточнение по оптимизации запроса
,
0 yolops
 
15.01.14
12:28
Здравствуйте. У меня есть два варианта запроса. Подскажите какй из них оптимальнее?

1)
Выбрать
   РезервыПоЗаказам.Заказ,  
   РезервыПоЗаказам.Резерв,
   СатусыПроверки.Проверено

Из РегистрНакопления.РезервыПоЗаказам.Остатки() КАК РезервыПоЗаказам
ЛЕВОЕ СОЕДИНЕНИЕ(ВЫБРАТЬ
    СатусыПроверкиДокументов.Документ,
        СатусыПроверкиДокументов.Проверено
    ИЗ
    РегистрСведений.СатусыПроверкиДокументов КАК СтатусыПроверкиДокументов
        ГДЕ СатусыПроверкиДокументов.ВидПроверки = &Проверка1) КАК СатусыПроверки
    ПО ПроизводствоНоменклатурыОстатки.Заказ = СатусыПроверки.Документ

и второй вариант:

ВЫБРАТЬ
   СатусыПроверкиДокументов.Документ,
   СатусыПроверкиДокументов.Проверено
ПОМЕСТИТЬ СатусыПроверки
ИЗ
   РегистрСведений.СатусыПроверкиДокументов КАК СтатусыПроверкиДокументов
        ГДЕ СатусыПроверкиДокументов.ВидПроверки = &Проверка1;
///////////////////////////////////////////////////
Выбрать
   РезервыПоЗаказам.Заказ,  
   РезервыПоЗаказам.Резерв,
   СатусыПроверки.Проверено

Из РегистрНакопления.РезервыПоЗаказам.Остатки() КАК РезервыПоЗаказам
ЛЕВОЕ СОЕДИНЕНИЕ СатусыПроверки КАК СатусыПроверки
ПО РезервыПоЗаказам.Заказ = СатусыПроверки.Документ
1 Starhan
 
15.01.14
12:29
тестируй с замером производительности.
2 Ненавижу 1С
 
гуру
15.01.14
12:30
Выбрать
   РезервыПоЗаказам.Заказ,  
   РезервыПоЗаказам.Резерв,
   СатусыПроверки.Проверено

Из РегистрНакопления.РезервыПоЗаказам.Остатки() КАК РезервыПоЗаказам
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.СатусыПроверкиДокументов КАК СтатусыПроверки
      
    ПО ПроизводствоНоменклатурыОстатки.Заказ = СатусыПроверки.Документ
И СатусыПроверкиДокументов.ВидПроверки = &Проверка1
3 МихаилМ
 
15.01.14
12:32
исправьте "Сатусы"
4 yolops
 
15.01.14
12:38
(1)та там каждый раз новое время показывает
(3)извините, опечатался
5 yolops
 
15.01.14
12:39
(2) А если мне во втором запросе, еще и сгруппировать данные надо?
6 Ненавижу 1С
 
гуру
15.01.14
12:43
(5) группируй, в (0) этого не было, но я не против
7 MadHead
 
15.01.14
12:48
(0) тебе как начинающему, проще будет взять за правило не писать вложенные запросы, а все делать через временные таблицы и строить в них индекс по полям соединений и условий. Этот подход в подавляющем большинстве случаев позволит написать оптимальный запрос
8 yolops
 
15.01.14
12:50
но все же, как происходит выборка данных в 1-м и 2-м вариантах. В 1-м варианте понятно, выбираются все записи, а вот как во 2-м? Сначала выбираются все записи, или же только те что подходят по условию соединения?
9 MadHead
 
15.01.14
12:59
(8) Выбираются все записи в обоих случаях. Иногда оптимизатор в случае "ненужной" выборки в вложенном запросе, может ее убрать.
10 yolops
 
15.01.14
13:00
(9) спасибо
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс