|
Какой вариант запроса будет работать быстрее? | ☑ | ||
---|---|---|---|---|
0
ParinovS
13.11.12
✎
10:52
|
Доброго времени суток. Подскажите какой вариант запроса будет работать быстрее?
1. ВЫБРАТЬ Остатки.Сумма, Остатки.СуммаНДС, Документ.Подразделение КАК Подразделение ИЗ Документ.ТоварныйЧек КАК Документ ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остатки КАК Остатки ПО (Остатки.Регистратор = Документ.Ссылка) ГДЕ Документ.Дата >= &НачПериода И Документ.Дата <= &КонПериода И Документ.Подразделение В ИЕРАРХИИ(&Подразделение) И Документ.Проведен 2. ВЫБРАТЬ ОстаткиОбороты.Склад.Подразделение КАК СкладПодразделение, ОстаткиОбороты.СуммаРасход КАК Сумма, ОстаткиОбороты.СуммаНДСРасход КАК СуммаНДСР ИЗ РегистрНакопления.Остатки.Обороты(&НачПериода, &КонПериода, Регистратор, Склад.Подразделение В ИЕРАРХИИ &Подразделение) КАК ОстаткиОбороты ГДЕ ОстаткиОбороты.Регистратор ССЫЛКА Документ.ТоварныйЧек |
|||
1
х86
13.11.12
✎
10:56
|
отборы в параметрах виртуальной таблицы всегда быстрее
|
|||
2
acsent
13.11.12
✎
10:58
|
(1) В первом запросе вообще обычная таблица используется
|
|||
3
hhhh
13.11.12
✎
11:00
|
(0) таблицы итогов регистра делаются в разрезе месяцев.
Поэтому ответ зависит от периода. Если нужно отчет за месяц, квартал или год, то второй запрос быстрее, если же за день, неделю или вообще непонятный диапазон дат, то первый будет быстрее. |
|||
4
х86
13.11.12
✎
11:01
|
(2)+ обращение к двум таблицам и левое соединение
|
|||
5
Лефмихалыч
13.11.12
✎
11:01
|
(0) а ни чо, что результат разный у запросов?
в первом случае выбираются движения по подразделению всех проведенных документов, а во втором - вообще все движения по подразделению |
|||
6
acsent
13.11.12
✎
11:01
|
(4) Виртуальная таблица тоже какбы не одна
|
|||
7
х86
13.11.12
✎
11:04
|
(6)да, Склад.Подразделение не кашерно здесь (2)
|
|||
8
Hmster
13.11.12
✎
11:04
|
(0) какой запрос быстрее?:
Выбрать * из Справочник.Контрагенты Или Выбрать * из Справочник.Номенклатура |
|||
9
hhhh
13.11.12
✎
11:05
|
(5) кстати да. В первом запросе Регистратор.Подразделение, а во втором Склад.Подразделение. Со складами наверняка быстрее будет, потому что там мальнькая табличка.
|
|||
10
ParinovS
13.11.12
✎
11:06
|
я имел ввиду подход... может плохой пример взял.
1. Связь документа (наложение параметров на документы) с таблицей через левое соединение. 2. Наложение параметров на виртуальную таблицу. |
|||
11
Лефмихалыч
13.11.12
✎
11:07
|
(10) общего ответа нет, все зависит от конкретики
|
|||
12
ParinovS
13.11.12
✎
11:09
|
просто я всегда использую вариант 2. недавно увидил использование варианта 1. у довльно умного человека. вот и интересно стало... что быстрее:)
|
|||
13
Hmster
13.11.12
✎
11:09
|
понять можно только на практике и то результат замеров может меняться со временем. Да и вообще разные конструкции для разных целей!
|
|||
14
vmv
13.11.12
✎
11:11
|
(10) виртуальную таблицу с парамтерами, а не условием ГДЕ получить в ВТ и эту ВТ с индексированными полями по соединению соединить с таблицей документа - это быстрее в общем случае
любой другой лепет, мол, а меня на 0000, 00001 милисекдну лучча - бред и от лукавого |
|||
15
vmv
13.11.12
✎
11:13
|
+(14) естественно все сделать в пакете без инициализации МВТ, все
|
|||
16
hhhh
13.11.12
✎
11:18
|
(12) во втором запросе
Склад.Подразделение В ИЕРАРХИИ &Подразделение тоже это ведь соединение вызывается, наложение параметров, да и еще и иерархия - это тоже группа соединений. |
|||
17
vmv
13.11.12
✎
11:20
|
(12) думаешь во 2-м варианте ты уходишь от соединения?)
|
|||
18
acsent
13.11.12
✎
11:21
|
(14) А если отбор по реквизиту регистра нужно делать?
|
|||
19
ДайтеДайте Сказать
13.11.12
✎
11:23
|
> ГДЕ Документ.Дата >= &НачПериода И Документ.Дата <= &КонПериода
Можно поумничать? Почему не применено условие МЕЖДУ? |
|||
20
vmv
13.11.12
✎
11:24
|
(18) получить его как поле в ВТ и делай хоть сразу - при получении ВТ, хоть при соединении
|
|||
21
ParinovS
13.11.12
✎
11:24
|
(16) и (19) я запросы писал как пример, мне важно было узнать быстроту вариантов подхода описанных в (10)
|
|||
22
Sammo
13.11.12
✎
11:27
|
(1) Не всегда. Реальный пример - отбор по не первому измерению причем не по селективному. Быстрее оказалось отобрать сначала, и потом наложить условие в Где
|
|||
23
МишКа
13.11.12
✎
11:29
|
(0) А что, первый запрос разве будет работать?
|
|||
24
ParinovS
13.11.12
✎
11:33
|
(23) читай, пожалуйста, всю ветку (10)
|
|||
25
dk
13.11.12
✎
11:36
|
(24) с соединениями аккуратно надо
т.к. фильтр накладывается после всех соединений т.е. выгоднее сначала применить все возможные фильтры и только потом делать соединения |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |