#0
by ОператорПК
Здравствуйте. Стоит задача получить лесенку (накопительный итог) по последовательности документов. Поясню напримере - есть исходная таблица произвольных документов: Нужна таблица: РТиУ №01 100 880 РТиУ №02 500 780 РТиУ №03 80 280 РТиУ №04 200 200 Какой самый быстрый способ ее получить? Сейчас используется конструкция: Но для большого количества документов работает дико медленно. Собственно вопрос каким запросом можно получить тот – же результат за меньшее время?
#5
by zak555
ты бы хотть так написал бы : РТиУ №01 200 200 РТиУ №02 80 280 РТиУ №03 500 780 РТиУ №04 100 880
#26
by ОператорПК
тот же коннект ПериодыИзменения.Период >= Регистр.Период что нового я там должен увидить?
#31
by ОператорПК
ИНДЕКСИРОВАТЬ ПО Регистратор, СуммаУпр -только не понятно как этот индекс может ускорить соединение по МоментВремени.
#32
by fisher
+ Мда... Ничего применимого к 1С в комментах не нашел. Все более быстрые способы к 1С не применимы.
#33
by ОператорПК
обычно одну и туже задачу можно решить разными способами вот я и спрашиваю про другой способ т.к. этот способ давольно медленно работает в моем случае.
#34
by shuhard
[как по одноэсовски будет] ни как отдаленный аналог курсора - временная таблица, её ты уже использовал
#35
by Axel2009
если не помог, значит ничего больше не поможет.. если только не извращаться и уменьшать количество обрабатываемых строк.. в цикле там обрабатывать..
#37
by ОператорПК
как мне его накопить? допустим есть пары Договор+Контрагент один пользователь захочет посмотреть в разрезе одного договора другой в разрезе всех.... у меня нет четкого соответствия Регистратор-Накопительный итог.
#39
by fisher
Судя по всему, на голом SELECTе быстрее никак. В T-SQL более быстрые варианты реализуют курсорами и DML.
#40
by Axel2009
не зная полной задачи , трудно посоветовать. может удастся както обойти этот пересчет. и сколько документов попадает под пересчет обычно?
#42
by Axel2009
и сколько отрабатывает по времени? и если "на входе" будет 1000 доков, скока будет отрабатывать?
#45
by Axel2009
в таблице 890 строк запрос отработал 1,4с "ВЫБРАТЬ ПЕРВЫЕ 200 "ВЫБРАТЬ ПЕРВЫЕ 200 отработал за 0.6сек на количестве данных 40000 будет еще существеннее. за минутку может и отработать.. быстрее хз как =)
#48
by fisher
Вопрос, как поведет себя такая методика на многомиллионных таблицах в сравнении с обычным методом. Сравни, плиз, с шагом в лимонов 5 строк несколько замеров. У тебя ведь всё готово уже. Очень интересно тенденцию отследить. Насколько замедлит работу многократное переливание туда-сюда огромной исходной таблицы (с выкусыванием обработанных порций). Ведь замедление этой операции замедляет работу всего алгоритма в геометрической прогрессии. Хочется понять, насколько метод применим на больших таблицах. Кстати, ЛЕВОЕ СОЕДИНЕНИЕ ПО ИСТИНА можно заменить на стандартную запись декартова произведения в SQL - просто указав вторую таблицу через запятую без всяких соединений. А Не ВыборкаПроверка.Следующий на Запрос.Выполнить.Пустой
#49
by Axel2009
если будет 1млн строк, то присоединение из даст обработку в 500 трл строк. сервер сдохнет.. а на счет "Пустой" тоже можно =)
#56
by Axel2009
скульсервак (база на скуле, новые тесты). до этого была файловая база проверка на 1000 строк одним запросом: 0.55сек обработкой по 200 строк: 0.77сек обработкой по 500 строк: 1.3сек проверка на 16 000 строк одним запросом: 82сек обработкой по 200 строк: 17сек обработкой по 500 строк: 12.7сек обработкой по 1000 строк: 13.1сек
#57
by fisher
Можно было бы полный аналог курсоров забабахать на порционных выборках (как 1С и делает в своих системных механизмах). Без переливания туда-сюда больших объемов. Просто выбирать порции из последовательных диапазонов исходной таблицы по нужному ключу, обрабатывать и результаты накапливать. Извечная проблема с накоплением. Т.к. добавить в 1С строки во временную таблицу можно только её полным пересозданием... Сколько нужных вещей в эту фигню упирается...
#58
by fisher
Спасибо. В общем, в независимости от оптимальности второго метода, первый однозначно идёт в топку на больших объемах...
#59
by Axel2009
да много чего можно было бы.. только запросы в 1с только те что T-SQL. а курсоры - это дело каждой СУБДшки.. поэтому и не делают
#61
by Axel2009
а я и не спорю. =) в части накопительных сумм ток у Оракла знаю есть такая приблуда..
#62
by Axel2009
+ ну и следующий скуль обещают наваять.. в 10ке.. хотя бета уже есть, можно глянуть. но на 1с это не отразится =)
#63
by fisher
T-SQL это как раз курсоры :) Это название диалекта MSSQL. Речь не о курсорах, их понятно почему нет. Речь о возможности INSERTов во временные таблицы. Это кучу бы возможностей дало.
#64
by Axel2009
T-SQL - транзактСКЛ, стандарт собственно говоря,которая каждая СУБДшка должна поддерживать =)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- УПП: НДС на собственные нужды
- СКД: ресурсы и отбор
- Как при закрытии формы, открытой модально, не выводилась форма списка в конце
- Обновление ПолеHTMLдокумента
- ОСВ: итоги развернутые, записи по контрагентам свернутые
- УРБД. Ошибка при синхронизации
- Программно установить вариант отчета СКД
- Как сделать список документа в виде иерархии
- Как проверить соответствует ли имя файла заданной маске?
- ЕНВД попадает в КУДИР
- префикс перед штрих-кодом, как избавится
- Com подключение к серверу 1С который стоит на 64 разрядном сервере
- Почему в списке регламентированных отчетов ничего нет?
- Выполнить код с полными правами
- toysql как поставить?
- Работа с весами "ШТРИХ-ПРИНТ" "напрямую"
- Учет производства из давальческого сырья в Комплексной автоматизации
- У кого доступ на users.v8.1c.ru есть?
- Помогите с зарплатой!!! УТП
- Нелегальное списание остатков в 7-ке.