Пронумеровать в запросе строки с учетом периода #784132


#0 by Homer
Есть запрос. В нем необходимо пронумеровать строки во временной таблица для последующего поиска максимума номера. Пользуюсь стандартным методом: связь двух таблиц по условию ИсходнаяТаблица.Ссылка > ИсходнаяТаблица1.Ссылка. Все прекрасно отрабатывает при малом количестве строк в ИсходнаяТаблица. Проблема в том, что таблицы большого объема (>10 000 строк) начинает тормозить. Есть способ нумерации строк с учетом того, что в будущих виртуальных таблицах необходимо будет искать максимум номера строки.
#1 by Ildarovich
Вообще всегда интересно знать фактуру задачи (скрывая эту информацию, вы лишаете многих интереса к решению, поскольку неясно, насколько задача актуальна и правильно ли она сформулирована). Ответьте хотя бы на это: - Что за данные в временной таблице? - Есть ли другие поля для упорядочивания, кроме ссылки? - Нужно ли вообще нумеровать строки, если максимальный номер можно определить, сначала найдя максимальную ссылку, а затем посчитав число ссылок меньше нее?
#2 by Homer
Задача почитать какие поступления закрыт планом при условии план связан с поступлением только договором. Вычисляется только запросом. Легче стало?
#3 by Ildarovich
Конечно, стало. Намного, намного легче и понятней. То есть вы решаете задачу "ФИФО запросом". На самом деле я знаю как решить эту задачу для 10 000 строк (и больше) без существенного торможения. Нумерация - это ведь частный случай нарастающего итога, который по сути - интеграл. По стечению обстоятельств, как раз сейчас заканчиваю публикацию с готовым запросом на эту тему. Наброски можете посмотреть вот тут: и вот тут . Обязательно опубликую в этой теме ссылку на статью, когда она будет готова.
#4 by polosov
Очень полезные статьи. Спасибо.
#5 by Homer
Данный метод смотрел 2 года назад. Как то геморно показалось)) Из   "Для таких особенных задач и предназначен описываемый далее метод. Он не опирается ни на какие технологические ухищрения, а является чисто алгоритмическим. Метод требует, чтобы строки исходной таблицы были пронумерованы. " И в чем преимущество твоего алгоритма?? Пронумеровать я могу также внешне, я интересуюсь именно быстрой нумерацией в запросе!! В моем отчете нумерация занимает 90% времени при количестве строк > 25 тыс. В цифрах: 200 сек отчет 180 сек нумерация 19 сек таб с нарастающим и 1 сек вычисление
#6 by Ildarovich
Преимущества в том, что при НУМЕРАЦИИ В ЗАПРОСЕ нет квадратичной зависимости от числа строк. ...геморно показалось... - а более простых методов нет даже в теории. В SQL для этого оконные функции придумали. Поскольку в 1С их нет, приходится идти на достаточно серьезные усложнения. Мне нравятся такие цифры: они говорят о том, что метод, который я разрабатываю, нужен. А есть ли какая-либо возможность протестировать мой подход на ваших данных? Я бы переписал запрос на ваш случай, если дадите свой исходный запрос (можно в почту).
#7 by sapphire
В нем необходимо пронумеровать строки во временной таблица для последующего поиска максимума номера. Интересно, чем же максимум будет отличаться от количества записей?
#8 by Homer
Запрос коммерческая тайна)) Я же написал, что могу вынести нумерацию из запроса. просто не удобно для отладки. В вашем механизме все равно надо сначала обработать какую-то таблицу и только потом ее выгрузить, пронумеровать и передать вашему математическому алгоритму. В моем методе аналогичная последовательность, только все в одном запросе. Или я не вижу в каком месте вы нумеруете таб? Данный акцент был сделал для того что бы не писали про момент времени.
#9 by sapphire
Вам нужен максимальный номер? Чем он будет отличаться от количества строк?
#10 by Homer
мне необходимо воспользоваться функцией Минимум. Прошу прощения кого ввел заблуждение про Максимум.
#11 by Ildarovich
Ну тайна так тайна. Тогда подождите статью - возьмете запрос оттуда. Там действительно решается эта или очень похожая проблема. Но довольно сложным способом. Для этого метод "баттерфляй", приведенный по ссылке, был улучшен. Теперь нумерации не требуется.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С