|
Уточнение по оптимизации запроса |
☑ |
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) спасибо
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший