![]() |
![]() |
![]() |
|
Что быстрее будет Запрос или РасчитатьРегистрыНа... ? | ☑ | ||
---|---|---|---|---|
0
smaharbA
17.09.10
✎
13:28
|
Запрос и расчет простейшие:
Запрос такого плана -
Временный расчет подобный такому -
|
|||
1
Irbis
17.09.10
✎
13:29
|
(0) А если замер производительности сделать?
|
|||
2
zak555
17.09.10
✎
13:29
|
какой-то странный временный расчёт
|
|||
3
vS
17.09.10
✎
13:29
|
эксперимент в отладчике? ;)
|
|||
4
smaharbA
17.09.10
✎
13:30
|
(1)(3) эээ, а нафига тогда вы тут, премьеру советы давать ? )))
|
|||
5
Джинн
модератор
17.09.10
✎
13:37
|
Запрос медленнее примерно в 5 раз.
|
|||
6
Ёпрст
гуру
17.09.10
✎
13:38
|
(0) зачем тебе начост и коност, если ты на позицию смотришь?
|
|||
7
smaharbA
17.09.10
✎
14:07
|
(6) а ты глянь внимательнее, они порознь от обстоятельств
(5) проверено ? Если так, то ужаснах :( |
|||
8
smaharbA
17.09.10
✎
14:09
|
или достаточно обойтись просто Количество ? (не шарю с запросами)
|
|||
9
smaharbA
17.09.10
✎
14:11
|
да - база скульная
а прямой запрос будет быстрее ли ? |
|||
10
МастерВопросов
17.09.10
✎
14:12
|
(5) если стоит клиент-серверный вариант и на сервере не слабое железо, то не факт, что запрос медленее.
|
|||
11
Ёпрст
гуру
17.09.10
✎
14:13
|
(9) будет быстрее.
|
|||
12
smaharbA
17.09.10
✎
14:14
|
(11) спасибо, буду всовывать оставляя прежний временный расчет при невозможности выполнения запроса
а вот интересуюсь почему прямой запрос будет быстрее ? |
|||
13
smaharbA
17.09.10
✎
14:15
|
+ или этого не нужно понимать, в это просто надо верить ? )))
|
|||
14
Ёпрст
гуру
17.09.10
✎
14:16
|
(13) а ты профайлером погляди, что летит на сервер - там усё виддно :)
|
|||
15
smaharbA
17.09.10
✎
14:17
|
да еще вопрос по "в пять раз медленнее" - а не че, что временный расчет в "цикле" (как в прочем и запрос) ?
|
|||
16
smaharbA
17.09.10
✎
14:18
|
сабж рассматривается не в одиночном выполнении, а в "групповом" - т.е. из многострочной части или еще из каких использоватьсписок
|
|||
17
МихаилМ
17.09.10
✎
14:20
|
все зависит от формата хранения данных.
для скл будет быстрее расчитать регистры на границу хранения (те считать готовые расчитанные можно даже бех фильтра, если больше 200 позиций ) и запросом выбрать обороты . сответственно их прибвить или отнять. 1с зачем то в запросе дважды расчитывает итоги на начало и дважды на конец что есть тормознуто. |
|||
18
smaharbA
17.09.10
✎
14:22
|
(17) т.е. будет быстрее снять остаток и вычисть сумму по движениям ?
|
|||
19
dk
17.09.10
✎
14:23
|
еще шустрее будет
РегОбщ = СоздатьОбъект("Регистры"); Рег = РегОбщ.Склад; ... Рег.ВременныйРасчет(1); РегОбщ.РассчитатьРегистрыНа(...) ---- по крайней мере в теории |
|||
20
smaharbA
17.09.10
✎
14:24
|
(19) в практике объект Регистры оказался медленнее
|
|||
21
dk
17.09.10
✎
14:24
|
странно
|
|||
22
smaharbA
17.09.10
✎
14:24
|
(21) вот и я так же сказал
|
|||
23
dk
17.09.10
✎
14:25
|
про фишку тормозов в скуле при фильтре на список значений с более 50 элементов в курсе?
|
|||
24
Fragster
гуру
17.09.10
✎
14:27
|
прямой запрос будет быстрее
|
|||
25
smaharbA
17.09.10
✎
14:33
|
(23) нет, может и было, но не вспомню
поясни |
|||
26
Fragster
гуру
17.09.10
✎
14:37
|
(25) В замени на ФПодразделение.Найти(..) = 1
|
|||
27
МихаилМ
17.09.10
✎
14:40
|
(25)
1с77 скл для передачи каждого значения зоздает хранимую процедуру, исполняет ее, затем удаляет. это не быстро. соответсвенно в запросе эффективней передовать список фильтрации через массив в виде Условие (искзначение = Массив[1] ... искзначение = Массив[N]) правда у этого метода есть ограничение на рамер текста запроса в 40 килобайт. те макс размер массива не 2200 элементов. |
|||
28
dk
17.09.10
✎
14:55
|
(25) если наложить в скульной базе условие фильтром
Условие МоеПоле В МойСЗ; и в МойСЗ будет список значений с более чем 50(условно) элементов, то скуль сильно призадумается, т.к. 1С по тупому этот список во временную таблицу засовывает --- куда быстрее сработает Условие МойСЗ.Принадлежит(МоеПоле) = 1; правда это условие уже на клиенте будет отрабатывать, но шустрее в разы просто |
|||
29
smaharbA
17.09.10
✎
15:00
|
(27)(28) понял, но в (0) нету списков там тупо значения, а то что "В", что бы безо всяких ухищрений не срабатывало условие на пустые значения
|
|||
30
МихаилМ
17.09.10
✎
15:08
|
(28)
принадлежит() вообще в скл версии лучше не использовать тк проверка делается чере скл запрос. тк базы 1с77 скл нет под рукой проверить не могу. Условие МойСЗ.Принадлежит(МоеПоле) = 1 должно быть очень тормозным в отличии от НайтиЗначение() |
|||
31
Эльниньо
17.09.10
✎
18:14
|
(19) А что лучше?
РегОбщ = СоздатьОбъект("Регистры"); Рег = РегОбщ.Склад; или Рег = СоздатьОбъект("Регистр.Склад"); |
|||
32
Мимохожий Однако
17.09.10
✎
20:22
|
(31)Одинаково.
|
|||
33
ДенисЧ
17.09.10
✎
20:33
|
а я бы вообще через прямой делал бы...
|
|||
34
dk
20.09.10
✎
07:53
|
(30) "Значение В Список" = "Список.Принадлежит(Значение)" <> "Список.НайтиЗначение(Значение) <> 0"
|
|||
35
smaharbA
20.09.10
✎
07:55
|
(32) есть различие, в первом случае один и тот же регистр может принять участие сразу в нескольких временных расчетах
|
|||
36
smaharbA
20.09.10
✎
07:56
|
(33) это само собою
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |