|
Какой запрос быстрее? | ☑ | ||||||
---|---|---|---|---|---|---|---|---|
0
PsyTech
19.07.13
✎
10:59
|
Всем привет!
Какой запрос быстрее? Вариант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" |
|||||||
1
wladimir90
19.07.13
✎
11:00
|
Замер производительности попробуй сделать.
|
|||||||
2
Maxus43
19.07.13
✎
11:00
|
Имхо второй.
использование ИЛИ в ГДЕ отключает использование индексов Вариант2 |
|||||||
3
PsyTech
19.07.13
✎
11:01
|
Регистр имеет 2 измерения:
UID ИмяРеквизита И 1 ресурс: Значение |
|||||||
4
Maxus43
19.07.13
✎
11:01
|
а вообще - результаты разные же будут
|
|||||||
5
PsyTech
19.07.13
✎
11:01
|
(4) почему?
|
|||||||
6
acsent
19.07.13
✎
11:03
|
(2) не прав, тут обычное ИмяРеквизита В (Список)
|
|||||||
7
Fragster
гуру
19.07.13
✎
11:03
|
я за 1
Вариант1 |
|||||||
8
Maxus43
19.07.13
✎
11:03
|
(5) чуство такое... в ГДЕ отбираются разные значения, в последнем случае только одно останется, в первом несколько
|
|||||||
9
Maxus43
19.07.13
✎
11:04
|
(6) где тут? в запросе не так. Или 1с сама ИЛИ преобразует в В?
|
|||||||
10
PsyTech
19.07.13
✎
11:04
|
(1) По замеру быстрее первый, но некоторые думают иначе.
|
|||||||
11
acsent
19.07.13
✎
11:04
|
если первого реквизита нет, то разные результаты быдут
|
|||||||
12
acsent
19.07.13
✎
11:04
|
попробуй ИмяРеквизита сделать 1 измерением
|
|||||||
13
acsent
19.07.13
✎
11:05
|
(9)Оптимизатор сиквела
|
|||||||
14
rs_trade
19.07.13
✎
11:05
|
такие вещи замеряют, а не спрашивают
|
|||||||
15
PsyTech
19.07.13
✎
11:06
|
(14) см. (10)
|
|||||||
16
Maxus43
19.07.13
✎
11:07
|
(13) проверял? мне вот кажется что он наставит OR и не будет индесы юзать
|
|||||||
17
acsent
19.07.13
✎
11:07
|
(15) конечно - у тебя ни 1 ни 2 не использует индекса
|
|||||||
18
PsyTech
19.07.13
✎
11:07
|
(8) результаты одинаковы будут
|
|||||||
19
acsent
19.07.13
✎
11:08
|
(16) ну посмотри план запроса. Хотя в случае (0) это не важно. Все равно мимо индекса
|
|||||||
20
wladimir90
19.07.13
✎
11:09
|
(10)(15) Не думаю что мнение авторитета перевесит реальные цифры замера. Главное правильно замерять
|
|||||||
21
Полотенчик
19.07.13
✎
11:12
|
(2) Я думаю если бы ИЛИ было по разным полям (даже если они были проиндексированы - например, ИЛИ по первому и второму по порядку измерениям регистра), то индекс не использовался, а т.к. здесь ИЛИ по одному и тому же полю, то нет оснований не использовать индекс.
Вариант1 |
|||||||
22
H A D G E H O G s
19.07.13
✎
11:13
|
1. Замерять надо правильно.
2. асцент насчет ИЛИ прав. 3. во 2 запросе - 3 поиска по регистру, тут уж как кэша SQL - хватит или нет. |
|||||||
23
H A D G E H O G s
19.07.13
✎
11:14
|
Я за первый вариант.
|
|||||||
24
Maxus43
19.07.13
✎
11:17
|
(22) скуль сам ИЛИ по одному реквизиту преобразует в В()?
|
|||||||
25
H A D G E H O G s
19.07.13
✎
11:18
|
(24) нет.
|
|||||||
26
Maxus43
19.07.13
✎
11:19
|
(25) толик пишет (6)(13), что преобразует. где он прав тогда?
|
|||||||
27
PsyTech
19.07.13
✎
11:21
|
(23) Так проголосуй)
|
|||||||
28
H A D G E H O G s
19.07.13
✎
11:24
|
(26) Он прав в том месте, в каком оптимизатор SQL выбирает нужный план запроса.
|
|||||||
29
viktor_vv
19.07.13
✎
11:33
|
Что ж вы так с этим ИЛИ пстоянно спорите. Как по мне то по одному полю ИЛИ использует индекс, сли есть подходящий.
|
|||||||
30
acsent
19.07.13
✎
11:34
|
(29) в данном запросе все равно нет подходящего
|
|||||||
31
viktor_vv
19.07.13
✎
11:42
|
(30) Ну так, а народ спорит :). Просто эта рекомендация насчет использования ИЛИ всем мозг прилично запудрила, народ шарахается от него, где надо и не надо.
|
|||||||
32
Maxus43
19.07.13
✎
11:44
|
да, пропоганда делает дело
|
|||||||
33
PsyTech
19.07.13
✎
13:13
|
всего 3 голоса?!
|
|||||||
34
RTFM_D
19.07.13
✎
13:13
|
.
Вариант1 |
|||||||
35
acsent
19.07.13
✎
13:14
|
(33) зачем голосовать то? оба запроса - дерьмо ))
|
|||||||
36
H A D G E H O G s
19.07.13
✎
13:23
|
(35) Схрена бы?
|
|||||||
37
PsyTech
19.07.13
✎
13:23
|
(35) предложи лучше
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |