Вход | Регистрация


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

Пронумеровать в запросе строки с учетом периода
Я
   Homer
 
31.10.16 - 13:39
Есть запрос. В нем необходимо пронумеровать строки во временной таблица для последующего поиска максимума номера. Пользуюсь стандартным методом: связь двух таблиц по условию ИсходнаяТаблица.Ссылка > ИсходнаяТаблица1.Ссылка. Все прекрасно отрабатывает при малом количестве строк в ИсходнаяТаблица. Проблема в том, что таблицы большого объема (>10 000 строк) начинает тормозить. Есть способ нумерации строк с учетом того, что в будущих виртуальных таблицах необходимо будет искать максимум номера строки.
 
 
   Ildarovich
 
1 - 31.10.16 - 14:01
Вообще всегда интересно знать фактуру задачи (скрывая эту информацию, вы лишаете многих интереса к решению, поскольку неясно, насколько задача актуальна и правильно ли она сформулирована). Ответьте хотя бы на это:
- Что за данные в временной таблице?
- Есть ли другие поля для упорядочивания, кроме ссылки?
- Нужно ли вообще нумеровать строки, если максимальный номер можно определить, сначала найдя максимальную ссылку, а затем посчитав число ссылок меньше нее?
   Homer
 
2 - 31.10.16 - 14:07
(1) Задача почитать какие поступления закрыт планом при условии план связан с поступлением только договором. Вычисляется только запросом.
Легче стало?
   Ildarovich
 
3 - 31.10.16 - 17:13
(2) Конечно, стало. Намного, намного легче и понятней. То есть вы решаете задачу "ФИФО запросом". На самом деле я знаю как решить эту задачу для 10 000 строк (и больше) без существенного торможения. Нумерация - это ведь частный случай нарастающего итога, который по сути - интеграл.

По стечению обстоятельств, как раз сейчас заканчиваю публикацию с готовым запросом на эту тему. Наброски можете посмотреть вот тут: http://catalog.mista.ru/public/201526/ и вот тут http://catalog.mista.ru/public/262300/.

Обязательно опубликую в этой теме ссылку на статью, когда она будет готова.
   polosov
 
4 - 31.10.16 - 17:45
(3) Очень полезные статьи. Спасибо.
   Homer
 
5 - 01.11.16 - 09:25
(3)
http://catalog.mista.ru/public/262300/ Данный метод смотрел 2 года назад. Как то геморно показалось))
Из  http://catalog.mista.ru/public/201526/
"Для таких особенных задач и предназначен описываемый далее метод. Он не опирается ни на какие технологические ухищрения, а является чисто алгоритмическим. Метод требует, чтобы строки исходной таблицы были пронумерованы. "

И в чем преимущество твоего алгоритма?? Пронумеровать я могу также внешне, я интересуюсь именно быстрой нумерацией в запросе!!
В моем отчете нумерация занимает 90% времени при количестве строк > 25 тыс.
В цифрах: 200 сек отчет 180 сек нумерация 19 сек таб с нарастающим и 1 сек вычисление
   Ildarovich
 
6 - 01.11.16 - 12:25
Преимущества в том, что при НУМЕРАЦИИ В ЗАПРОСЕ нет квадратичной зависимости от числа строк.

...геморно показалось... - а более простых методов нет даже в теории. В SQL для этого оконные функции придумали. Поскольку в 1С их нет, приходится идти на достаточно серьезные усложнения.

Мне нравятся такие цифры: они говорят о том, что метод, который я разрабатываю, нужен.

А есть ли какая-либо возможность протестировать мой подход на ваших данных? Я бы переписал запрос на ваш случай, если дадите свой исходный запрос (можно в почту).
   sapphire
 
7 - 01.11.16 - 13:07
(0) В нем необходимо пронумеровать строки во временной таблица для последующего поиска максимума номера.

Интересно, чем же максимум будет отличаться от количества записей?
   Homer
 
8 - 01.11.16 - 13:16
(6) Запрос коммерческая тайна))
Я же написал, что могу вынести нумерацию из запроса. просто не удобно для отладки. В вашем механизме все равно надо сначала обработать какую-то таблицу и только потом ее выгрузить, пронумеровать и передать вашему математическому алгоритму. В моем методе аналогичная последовательность, только все в одном запросе. Или я не вижу в каком месте вы нумеруете таб?
(7) Данный акцент был сделал для того что бы не писали про момент времени.
   sapphire
 
9 - 01.11.16 - 13:18
(8) Вам нужен максимальный номер?
Чем он будет отличаться от количества строк?
   Homer
 
10 - 01.11.16 - 13:24
(9) мне необходимо воспользоваться функцией Минимум. Прошу прощения кого ввел заблуждение про Максимум.
МИНИМУМ(мТабПредварительная.Номер) КАК Номер
ПОМЕСТИТЬ мТабЧастичноОплаченнаяФакт
 
 Рекламное место пустует
   Ildarovich
 
11 - 01.11.16 - 14:54
(8) Ну тайна так тайна.

Тогда подождите статью - возьмете запрос оттуда. Там действительно решается эта или очень похожая проблема. Но довольно сложным способом. Для этого метод "баттерфляй", приведенный по ссылке, был улучшен. Теперь нумерации не требуется.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует