|
Вопрос по запросам. Как правильно с точки зрения классики. | ☑ | ||
---|---|---|---|---|
0
Lama12
28.02.14
✎
11:10
|
Есть запрос.
Работает. Но вот если внутреннее соединение заменить на левое, то результат совсем другой. Вопрос. Так и должно быть в классике, или это особенность реализации запросов в 1С? |
|||
1
wanderer_ица
28.02.14
✎
11:12
|
"результат совсем другой. "
Он тебе ВойнуИМир в ответ выдаёт? |
|||
2
Lama12
28.02.14
✎
11:14
|
(1) Нет, он дает Null по полю ЮрАдрес.
|
|||
3
fvadim
28.02.14
✎
11:14
|
(0) всё правильно, результаты не должны совпадать
|
|||
4
wanderer_ица
28.02.14
✎
11:14
|
(2) И ши ви таки хочите иного?
|
|||
5
fisher
28.02.14
✎
11:15
|
(0) Так и должно быть по классике. Если под классикой понимать здравый смысл и формальную логику.
|
|||
6
fvadim
28.02.14
✎
11:15
|
(3) левое - справа есть null - выводим
внутреннее - справа есть null - не выводим |
|||
7
Lama12
28.02.14
✎
11:16
|
Если убрать "Первые 1", то результаты будут идентичными.
|
|||
8
Maxus43
28.02.14
✎
11:19
|
Выразить в Соединении - вселенское зло и пичаль
|
|||
9
Lama12
28.02.14
✎
11:19
|
тьфу...
Не тот запрос скопировал :(
|
|||
10
Lama12
28.02.14
✎
11:20
|
(8) Так советует Заратустра от ИТС 1С.
|
|||
11
Lama12
28.02.14
✎
11:22
|
все... вопрос снимается. Сам туплю.
|
|||
12
Maxus43
28.02.14
✎
11:37
|
(10) не верю. Использование Выразить рекомендуется в других случаях, я именно про Соединение, там это зло
|
|||
13
Lama12
28.02.14
✎
12:01
|
(12) Правильно что не веришь. Видимо у меня устарела информация. Сейчас статьи не нашел.
Вопрос - где можно почитать почему не рекомендуется в соединениях использовать Выразить? |
|||
14
Maxus43
28.02.14
✎
12:03
|
(13) да просто посмотри в профайлере во что превращается сие богомерзкое дело...
На курсах по запросам об этом прямо говорят преподы обычно |
|||
15
Lama12
28.02.14
✎
12:08
|
(14) Понял. Спасибо!
|
|||
16
fisher
28.02.14
✎
12:32
|
(14) И во что же? Я, наивный, почему-то считал, что просто добавляется условие на тип. Нет?
|
|||
17
Maxus43
28.02.14
✎
12:35
|
(16) щас точно не скажу, толи индекс скан станет идти, толи целая портянка условий... короче плохо, сталкивался. убрав в одном запросе такое выразить - скорость выполнения на порядочек скакнула. Скуля под рукой нет
|
|||
18
fisher
28.02.14
✎
12:38
|
Подумав... Скорее всего да - ничего хорошего не будет.
В соединениях использовать ВЫРАЗИТЬ() в самом деле бессмысленно. |
|||
19
Maxus43
28.02.14
✎
12:39
|
частично по теме http://programmist1s.ru/ekspert-optimizatsiya-zaprosov-v-1s/
без выразить правда, но есть моменты типа использования ИЛИ, и соединения с вложенным запросом |
|||
20
fisher
28.02.14
✎
12:44
|
(19) С вложенными подзапросами - момент спорный. Всё сильно зависит от условий.
|
|||
21
H A D G E H O G s
28.02.14
✎
12:45
|
(17) Индекс скан? Точно не индекс сиик?
А если найду? |
|||
22
Maxus43
28.02.14
✎
12:48
|
(21) не точно, я ж сказал - щас точно не скажу :)
Ну ты хоть согласен что это ЗЛО? |
|||
23
Maxus43
28.02.14
✎
12:49
|
(20) там проблема с постоением плана запроса, мол скулю сложно в этом случае определить оптимальный план, и может (не всегда конечно) выбрать неоптимальный
|
|||
24
H A D G E H O G s
28.02.14
✎
12:50
|
(22) Я согласен, что запрос - шлак.
И что это - не ДОБРО точно. |
|||
25
H A D G E H O G s
28.02.14
✎
12:51
|
(23) Я за все время только 1 раз сталкивался с неоптимальным планом, связанным с конструкцией EXIST (условие по вложенному запросу).
|
|||
26
Maxus43
28.02.14
✎
12:53
|
(25) если есть вероятность выбора неоптимального плана - то зачем её допускать, если есть простой способ обхода? я хз, у меня уже просто рефлекс выработался, не пишу соединения со вложенными, сразу ВТ делаю
|
|||
27
Maxus43
28.02.14
✎
12:53
|
конечно если во вложенном всего 5-10 записей всегда - то и он сойдёт, это мелочи
|
|||
28
Zero on a dice
28.02.14
✎
13:01
|
(26) т.е. оптимальней кидать во временную с полем Выразить() и потом соединять с ним, чем соединять с условием Выразить()?
|
|||
29
Maxus43
28.02.14
✎
13:06
|
(28) нет, оптимальней просто соединять, без Выразить.
Про временную - это когда используются вложенные запросы |
|||
30
fisher
28.02.14
✎
14:26
|
(26) Используя напропалую временные таблицы ты лишаешь оптимизатор запроса свободы при построении плана плюс получаешь лишние накладные расходы. Это далеко не то же самое, что уменьшить "вероятность выбора неоптимального плана".
Лично я использую временные таблицы только в самых явных случаях (многократное использование полученных данных, например). А дальше экспериментирую только если производительность не устраивает. И выигрыш при создании временных таблиц я получаю нечасто. |
|||
31
Infsams654
28.02.14
✎
14:36
|
(25), (26), (30) - еретическая мысль, в запросах можно использовать виртуальные т. Почему бы их не сделать методами платформы, а не запроса ?
|
|||
32
Lama12
28.02.14
✎
14:40
|
Хы... Вот так глупость утром спросишь. Поймешь что глупость спросил.А к обеду много нового узнаешь :)
Обожаю мисту. |
|||
33
fisher
28.02.14
✎
14:43
|
(31) Т.е. ты предлагаешь сделать то же самое, только хуже? И какой в этом смысл?
На уровне СУБД это будет тот же самый запрос. Только ты не сможешь его использовать как составляющую более сложного запроса. |
|||
34
fisher
28.02.14
✎
14:49
|
Да и сделано уже всё. Методами прикладных объектов ты можешь выбрать практически то же самое, что и голыми виртуальными таблицами этих объектов. Только так никто не делает, потому что глупо.
|
|||
35
Infsams654
28.02.14
✎
16:35
|
(34) нужно работать "Методами прикладных объектов". Глупо работать запросами (от этого только "растопыривание пальцеВ").
|
|||
36
fisher
28.02.14
✎
19:51
|
(35) Учи запросы, глупыш упрямый.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |