Имя: Пароль:
1C
1С v8
Какой запрос быстрее?
, ,
0 PsyTech
 
19.07.13
10:59
1. Вариант1 75% (3)
2. Вариант2 25% (1)
Всего мнений: 4

Всем привет!

Какой запрос быстрее?

Вариант1:

ВЫБРАТЬ
   РегистрСв.UID,
   МАКСИМУМ(ВЫБОР
           КОГДА РегистрСв.ИмяРеквизита = "Реквизит1"
               ТОГДА РегистрСв.Значение
       КОНЕЦ) КАК Реквизит1,
   МАКСИМУМ(ВЫБОР
           КОГДА РегистрСв.ИмяРеквизита = "Реквизит2"
               ТОГДА РегистрСв.Значение
       КОНЕЦ) КАК Реквизит2,
   МАКСИМУМ(ВЫБОР
           КОГДА РегистрСв.ИмяРеквизита = "Реквизит3"
               ТОГДА РегистрСв.Значение
       КОНЕЦ) КАК Реквизит3
ИЗ
   РегистрСведений.РегистрСв КАК РегистрСв
ГДЕ
   (РегистрСв.ИмяРеквизита = "Реквизит1"
           ИЛИ РегистрСв.ИмяРеквизита = "Реквизит2"
           ИЛИ РегистрСв.ИмяРеквизита = "Реквизит3")

СГРУППИРОВАТЬ ПО
   РегистрСв.UID



Вариант2:

ВЫБРАТЬ
   РегистрСв1.UID,
   РегистрСв1.Значение КАК Реквизит1,
   РегистрСв2.Значение КАК Реквизит2,
   РегистрСв3.Значение КАК Реквизит3
ИЗ
   РегистрСведений.РегистрСв КАК РегистрСв1
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСв КАК РегистрСв2
       ПО (РегистрСв2.ИмяРеквизита = "Реквизит2")
           И РегистрСв1.UID = РегистрСв2.UID
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСв КАК РегистрСв3
       ПО (РегистрСв3.ИмяРеквизита = "Реквизит3")
           И РегистрСв1.UID = РегистрСв3.UID
ГДЕ
   РегистрСв1.ИмяРеквизита = "Реквизит1"
7 Fragster
 
гуру
19.07.13
11:03
я за 1

Вариант1
21 Полотенчик
 
19.07.13
11:12
(2) Я думаю если бы ИЛИ было по разным полям (даже если они были проиндексированы - например, ИЛИ по первому и второму по порядку измерениям регистра), то индекс не использовался, а т.к. здесь ИЛИ по одному и тому же полю, то нет оснований не использовать индекс.

Вариант1
34 RTFM_D
 
19.07.13
13:13
.

Вариант1