|
Двойное использование даты в СрезПоследних | ☑ | ||
---|---|---|---|---|
0
lighto1
31.10.12
✎
08:05
|
Любезнейшие, извините за нубский вопрос, но поясните по-хардкору, зачем в СрезеПоследних на дату(&Квартал) еще и в условиях указывать эту дату(&Квартал)?
РегистрСведений.ЖурналУчетаСчетовФактур.СрезПоследних( &Квартал, Организация = &Организация И Период = &Квартал И ДатаВыставленияПолучения <> ДАТАВРЕМЯ(1, 1, 1)) Есть ли разница по сравнению с обращением к реальной таблице регистра с условием по периоду, и если ее нет, то неужели все дело в колоссальном увеличении скорости обработки запроса? |
|||
1
Fragster
гуру
31.10.12
✎
08:06
|
(0) задай этот вопрос автору запроса
|
|||
2
rphosts
31.10.12
✎
08:09
|
это не условие на ресурс?
|
|||
3
lighto1
31.10.12
✎
08:09
|
(1) Ну это ж типовая конфа - Буха 2.0.39.9, ее писали боги 1С и отцы-основатели, они же не могут ошибаться) В этом должен быть потаенный смысл!
|
|||
4
rphosts
31.10.12
✎
08:10
|
(3) структуру регистра дай
|
|||
5
lighto1
31.10.12
✎
08:10
|
(2) регистр периодический, такого ресурса нет
|
|||
6
lighto1
31.10.12
✎
08:12
|
(4) Ну это периодический регистр сведений с подчинением регистратору с измерениями (Орг-ия, контрагент, счетфактура,частьжурнала) и кучей ресурсов, среди которых нет Периода =)
|
|||
7
Живой Ископаемый
31.10.12
✎
08:13
|
чувакам не интересно получать срез последних. им интересно получать на конкретную дату.
|
|||
8
Живой Ископаемый
31.10.12
✎
08:14
|
есть ли выигрыш перед обращением к физической.. - нужно мерять
|
|||
9
rphosts
31.10.12
✎
08:15
|
>Есть ли разница по сравнению с обращением к реальной таблице регистра с условием по периоду, и если ее нет, то неужели все дело в колоссальном увеличении скорости обработки запроса?
есть, срез отработает наибыстрейшим способом, лучше чем срез у тебя вряд-ли получится |
|||
10
rphosts
31.10.12
✎
08:17
|
хотя получается, что Период = &Квартал - это условие не то, что данным числом есть эта запись... нужно сделать замер времени запроса Среза и написать свой и померить для него время - вот и будет сразу видно
|
|||
11
lighto1
31.10.12
✎
08:17
|
Подытожим: получается, здесь обращение к Срезу, а не к реальной таблице ТОЛЬКО ради скорости.
Значит простым смертным надо брать этот прием на заметку и ВЕЗДЕ делать также? Больше никаких реальных таблиц! ) |
|||
12
rphosts
31.10.12
✎
08:19
|
(11) делаем как написано в (10) и думаем над тем что получилось. Иногда оптимальнее брать исходные записи или агрегаты настраивать
|
|||
13
Живой Ископаемый
31.10.12
✎
08:19
|
2(11) почему спустя 5 лет или сколько там в8 существует это сюрприз для тебя?
|
|||
14
Повелитель
31.10.12
✎
08:20
|
Да видимо есть смысл.
В регистре есть 4 записи: Товар1 01.10.2012 Товар2 02.10.2012 Товар3 10.10.2012 Товар4 20.10.2012 Если поставить Квартал = 10.10.2012, то без условия попадут Товар1 01.10.2012 Товар2 02.10.2012 Товар3 10.10.2012 с условием И Период = &Квартал только 1 запись Товар3 10.10.2012 |
|||
15
Живой Ископаемый
31.10.12
✎
08:20
|
2(12) На РС есть агрегаты? в 8.3?
|
|||
16
lighto1
31.10.12
✎
08:22
|
(14) ну т.е. то же самое, как если бы обращались к реальной таблице с условием Период = &Квартал...
|
|||
17
МишКа
31.10.12
✎
08:27
|
(3) Ее писали программисты, которые не смогли устроится на большую зарплату в какой-нибудь франч.
|
|||
18
kible
31.10.12
✎
08:28
|
(16) Да. Только со срезом последних наверно быстрее будет запрос работать.
|
|||
19
rphosts
31.10.12
✎
08:33
|
(15)не, про агрегаты и исходные записи регистров я в целом, чел предложил вообще только виртуальными обходиться
|
|||
20
lighto1
31.10.12
✎
08:33
|
(13) Ну так исторически сложилось в ходе моего обучения в голове закрепилась одна мысль-"правило": где нужен срез последних - делаем срез последних, где нужны реальные записи - делаем реальные записи. (Круто звучит, да?) Поэтому, когда увидел - возник вопрос .а костыль ли это или венец программистской мысли?
|
|||
21
rphosts
31.10.12
✎
08:35
|
(18) там отбираются записи на конкретную дату, так что можно 1 запросом попадающим неплохо так в индекс обойтись, безовсяких пакетных - должно быть быстрее запроса из (0), но нужно мерить
|
|||
22
Повелитель
31.10.12
✎
08:35
|
(16)
Ну вообщем да )) Тогда надо замеры делать, смотреть )) |
|||
23
EasyRider
31.10.12
✎
09:17
|
Вариант с срезом последних выполняется ~50 мс, вариант с реальной таблицей меньше 1 мс
|
|||
24
Живой Ископаемый
31.10.12
✎
09:30
|
2(23) о.. правда? при любом количестве записей?
|
|||
25
EasyRider
31.10.12
✎
09:32
|
(24)конечно нет,но тенденция видна
|
|||
26
Живой Ископаемый
31.10.12
✎
09:36
|
тенденция видна была бы если бы ты сказал что на миллиарде записей выполянется за 50 секунд в одном случае и за 1 секунду в другом случае. А тут как раз тенденция не видна
видны только сферические цифры в сферическом вакууме. |
|||
27
EasyRider
31.10.12
✎
09:38
|
(26)ну замеряй сам на миллиарде строк,кто запрещает-то?Результат показать не забудь
|
|||
28
EasyRider
31.10.12
✎
09:45
|
+(27)к слову сказать срез последних на самом деле разворачивается в соединение таблицы с самой собой.Такая конструкция будет выполняться дольше,чем простой select,так что еще до замеров было понятно что быстрее
|
|||
29
rphosts
31.10.12
✎
09:47
|
(26)насколько помню срез - это пакетный запрос из 2 запросов и первый запрос пакета уже будет отбирать больше данных для получения результата (по группировке), поэтому с ростом размера регистра разница должна только возрастать...
(23)при выполнении на маленькой базе быстрее отработает тот запрос который был вызван вторым, т.к. при выполнении первого регистр полностью закэшируется в память. как-то вот так |
|||
30
EasyRider
31.10.12
✎
09:52
|
(29)я делал несколько замеров для каждого варианта.Срез это не пакетный запрос - это inner join
|
|||
31
rphosts
31.10.12
✎
09:56
|
(30) ну если несколько и первые не смотреть - это конечно ближе к реалу
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |