|
Параметры или отборы в СКД | ☑ | ||
---|---|---|---|---|
0
Droning1C
26.02.21
✎
14:11
|
Добрый день!
Предположим, сформировали мы здоровенный отчет. После формирования был применен отбор. Система заново запросит весь огромный набор данных, а потом применит отбор или отберет записи по уже готовому набору? Если отберет уже по готовому набору, то где он хранится? |
|||
1
Droning1C
26.02.21
✎
14:11
|
Извините, если вопрос тупой, то ткните в литературу, пожалуйста, почитаю.
|
|||
2
ДенисЧ
26.02.21
✎
14:13
|
ЯНХНП.
Куда отбор был применён? |
|||
3
Droning1C
26.02.21
✎
14:21
|
(2) пользователем на форме
|
|||
4
Droning1C
26.02.21
✎
14:23
|
(2) например отчет показывает инфу в разрезе подразделений. в качестве параметры в запрос, формирующий набор данных, подразделение НЕ передается. Т.Е. выводится по кнопке сформировать весь набор данных. Набор данных вывелся. Пользователь ставит отбор по подразделению. Система заново запросит весь огромный набор данных, а потом применит отбор или отберет записи по уже готовому набору? Если отберет уже по готовому набору, то где он хранится?
|
|||
5
vicof
26.02.21
✎
14:24
|
Заново
|
|||
6
Droning1C
26.02.21
✎
14:25
|
(5) Если заново, то в чем тогда принципиальное отличие параметров запроса от отборов?
|
|||
7
Droning1C
26.02.21
✎
14:26
|
ну разве что периоды и параметры виртуальных таблиц обязательно в параметры запроса надо пихать. а по остальным в чем разница?
|
|||
8
Droning1C
26.02.21
✎
14:33
|
параметр применится раньше, отбор применится позже. Только в этом?
|
|||
9
Kassern
26.02.21
✎
14:35
|
(6) параметр запроса влияет на формирование итоговой таблицы запроса, а отбор на форме работает с уже итоговой таблицей. Получается если ты берешь взаиморасчеты по 60тыс клиентов и потом отбором на форме отбриваешь только РогаИКопыта, то будет одно время формирования отчета, а если ты параметром укажешь в запросе что выбирать только клиентов из таблицы где Партнер= РогаИКопыта, то будет совсем другое время формирование отчета.
|
|||
10
ДенисЧ
26.02.21
✎
14:35
|
(9) Ну не гони...
|
|||
11
Kassern
26.02.21
✎
14:36
|
(10) хочешь сказать, что время выполнения отчета будет одинаковое?
|
|||
12
Droning1C
26.02.21
✎
14:38
|
(9) тогда почему во всех типовых разрабы предпочитают отборы параметрам?
|
|||
13
ДенисЧ
26.02.21
✎
14:38
|
(11) Зависит от отбора. Если ты берёшь примитивный запрос к остатку и склад в параметры, а номенклатуру в отбор - то да. Одинаковое.
Достаточно посмотреть на результирующий скдшный запрос. |
|||
14
ДенисЧ
26.02.21
✎
14:38
|
(12) Отборы более гибко настраиваются.
|
|||
15
toypaul
гуру
26.02.21
✎
14:42
|
параметр всегда есть в запрос
отбор не всегда. но часто |
|||
16
toypaul
гуру
26.02.21
✎
14:43
|
(12) параметр поскольку он всегда в запросе (хотя есть вариант что он может быть оттуда исключен) нужно всегда заполнять. а это не всегда нужно.
|
|||
17
Classic
26.02.21
✎
14:43
|
(15)
Какой параметр всегда есть в запросе? |
|||
18
toypaul
гуру
26.02.21
✎
14:44
|
а еще параметр всегда (100%) будет применен именно там в запросе, где он написан. а отбор не всегда :)
|
|||
19
toypaul
гуру
26.02.21
✎
14:45
|
(17) любой параметр есть в запросе. поскольку он оттуда взят. если мы ведем речь про те параметры, которые влияют на выборку данных (то есть запрос)
|
|||
20
Classic
26.02.21
✎
14:47
|
(19)
Не совсем понимаю, что ты пишешь. Параметр ВСЕГДА ЕСТЬ в запросе или Параметр всегда есть В ЗАПРОСЕ ? |
|||
21
Kassern
26.02.21
✎
14:50
|
(13) да действительно, сейчас в профайлере глянул, запрос одинаковый на скуль идет, что параметром, что отбором по простой таблице
|
|||
22
mikecool
26.02.21
✎
14:51
|
(8) нет, отборы могут применяться параллельно с параметрами или вместо них, включая и отборы в параметрах вирт таблицах
|
|||
23
toypaul
гуру
26.02.21
✎
14:51
|
(20) параметр всегда действует на запрос (если не использованы специальные шаманские методы). а отбор действует только тогда, когда он применен. параметр применен всегда.
|
|||
24
Droning1C
26.02.21
✎
14:51
|
(13) (21) Хорошо, а в каких случаях выбор параметр или отчет будет принципиально важным?
|
|||
25
Droning1C
26.02.21
✎
14:52
|
(24) с точки зрения быстродействия
|
|||
26
Kassern
26.02.21
✎
14:54
|
(21) отобрал клиентов по коду в параметре и по отбору в запросе, скулю же 1ска шлет одно и то же:
exec sp_executesql N'SELECT T1._IDRRef, T1._Description, T1._Fld20495RRef, T1._IDRRef, T1._Description FROM dbo._Reference199 T1 WHERE ((T1._Fld1061 = P1)) AND ((T1._Code = @P2))',N'P1 numeric(10),@P2 nvarchar(4000)',0,N'УТ-00048609' |
|||
27
vicof
26.02.21
✎
14:57
|
(26) В виртуальных таблицах поотбирай)
|
|||
28
Mikeware
26.02.21
✎
15:02
|
(24) когда пользователю отбор настраивать надо... самому. и гибко.
|
|||
29
Droning1C
26.02.21
✎
15:08
|
(28) а с точки зрения быстродействия?
|
|||
30
Кир Пластелинин
26.02.21
✎
15:09
|
(23) дык для параметра же можно указать "использование" - "всегда" или "авто", а так же запрет незаполненных значений.
(25) тут нет никаких "принципиально важным", т.к. все в первую очередь упирается в сам текст запроса и логику получения требуемых данных. Параметр (если грубо) - жестко прописан в тексте запроса на предмет "равно, не равно, в иерархии и прочее" например. Отбор же более гибок, т.к. позволяет в пользовательском режиме вертеть им как угодно. К тому же разработчик может явно указать момент применения того или иного отбора. поправьте меня, если не прав |
|||
31
vicof
26.02.21
✎
15:11
|
(29) Быстродействие понятие более многогранное, чем выбор отбора и параметра.
|
|||
32
vicof
26.02.21
✎
15:11
|
(31) *или параметра
|
|||
33
Droning1C
26.02.21
✎
15:13
|
(32) понятно, что нужен какой-то пример. Но в целом, может ли кто-то привести пример, когда с точки зрения быстродействия выбор между параметром и отбором однозначен?
|
|||
34
Mikeware
26.02.21
✎
15:24
|
(30) всегда или авто- вроде как зависит от текста запроса
(29) (33) запрос при применении отборов будет обрабатываться СКДшным "препроцессором", который будет применять СКДшное расширение языка запросов в зависимости от отборов. поэтому на сервер могут уйти и совершенно одинаковые запросы. |
|||
35
AceVi
26.02.21
✎
15:25
|
(33) Например выборка за период по временной таблице Хозрасчетный.Остатки()
И например тебе нужен 1 конкретный контр если ты используешь параметр скд и подставишь его в параметры виртуальной таблицы у тебя будет 10 строк а ели применишь отбор скд - то у тебя будет таблица на 1000 строк, из которой система по указке твоего отбора выберет 10. Что быстрее сразу получить таблицу на 10 строк или воландаться с таблицей на 1000 смотри сам. быстродействие у каждого свое. |
|||
36
ДенисЧ
26.02.21
✎
15:49
|
(35) чушЬ не пори. Выше уже написано всё.
|
|||
37
Mikeware
26.02.21
✎
15:51
|
(35) почему? указать в фильтре виртуальной таблицы {(Контрагент.*)}, и получишь то же самое
|
|||
38
Classic
26.02.21
✎
18:04
|
(29)
Что может быть такого особого в быстродействии? Запрос все равно будет преобразован в скулевый. В скуле ничего кроме where и having нет. |
|||
39
Mikeware
26.02.21
✎
18:09
|
(38) отбор внутри виртуальной таблицы будет быстрее, чем постобработка
|
|||
40
Classic
26.02.21
✎
18:25
|
(39)
То понятно, я про то, что как 1С принципиально по-разному отработает отбор или параметр. |
|||
41
ДедМорроз
26.02.21
✎
18:39
|
Начнем с того,что в общем случае,при задании параметра или отбора у него ставится галка,и текст запроса трансформируется согласно новым условиям,то есть будет выполняться новый запрос,и скуль решит,есть ли что-то в кеше или нет для его быстрого выполнения.
|
|||
42
Droning1C
27.02.21
✎
10:23
|
(41) а поподробнее можно? Тоесть все же есть некий кэш, который оптимизирует выполнение повторного запроса, если запрос не модифицирован?
|
|||
43
ДенисЧ
27.02.21
✎
10:39
|
(42) Есть. Называется SQL Server )))
|
|||
44
rozer76
27.02.21
✎
11:09
|
(15) ну если снять галку Автозаполнение то отборы тоже можно сделать "всегда" и в нужном месте а то с автозаполнением СКД чудит иногда и вместо отбора в вирт таблице пихает в ГДЕ и тогда печаль...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |