Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Следующая запись / 14 сообщений из 14, страница 1 из 1
15.11.2021, 13:29
    #40112061
Swv
Swv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Следующая запись
Здравствуйте.

Имеется таблица. 2 млн записей. PeopleId, date….
Собственно надо для каждой записи по человеку найти следующую.

Сделал подзапросом с first- ушло в кому.

В результате надо посчитать для каждой записи по челу временной интервал до следующей записи


Мож кто что подскажет. Индексы все в наличии

Спасибо
...
Рейтинг: 0 / 0
15.11.2021, 13:31
    #40112064
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Следующая запись
Swv,

Покажи запрос и план
...
Рейтинг: 0 / 0
15.11.2021, 13:40
    #40112066
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Следующая запись
Swv,

покажи сам запрос и план. А ещё версию Firebird
...
Рейтинг: 0 / 0
15.11.2021, 14:15
    #40112083
Swv
Swv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Следующая запись
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select first 100 c, datee,next_date,e_type
,
datediff(minute from cast(datee as date) to cast(next_date as date))  TIMEDIFF
from (
select first 100 site_log_raw.c,site_log_raw.datee, site_log_raw.e_type,
(select first 1 datee  from site_log_raw z where z.orders_all_ext_78_id = site_log_raw.orders_all_ext_78_id and z.datee > site_log_raw.datee )
    next_date
 from site_log_raw
)



индекс по orders_all_ext_78_id,datee

FB 2.5
...
Рейтинг: 0 / 0
15.11.2021, 14:18
    #40112085
sysdba22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Следующая запись
план еще нужен.

скорее всего по дате индекс DESC нужен.
...
Рейтинг: 0 / 0
15.11.2021, 14:25
    #40112086
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Следующая запись
Swvиндекс по orders_all_ext_78_id,datee

В подзапрос надо добавить ORDER BY orders_all_ext_78_id,datee. Иначе он не
просто будет медленным, но и вообще вернёт чушь. Проследить, что его план стал
ORDER.
Derived table тут совершенно ни к чему. Особенно с first без order.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.11.2021, 15:40
    #40112106
Swv
Swv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Следующая запись
Dimitry Sibiryakov,

order by добавил.


план такой

Plan
PLAN (Z ORDER SITE_LOG_RAW_IDX9 INDEX (SITE_LOG_RAW_IDX9))
PLAN (SITE_LOG_RAW NATURAL)


первый сто записей выдал через 31 секунду )

индексных чтений 1097376

для первых ста записей подзапрос "перебирает" 128051 записей (это если вместо first count написать - сумма по 100 записям)
...
Рейтинг: 0 / 0
15.11.2021, 15:54
    #40112110
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Следующая запись
Swvплан такой

Неправильный план. Тренируйся на кошках пока не научишься добиваться ORDER.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.11.2021, 17:03
    #40112128
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Следующая запись
Swv,

правильно понимаю - если для конкретного человека 10 записей, то надо выдать 9 интервалов, если 100 записей, то 99 интервалов?
...
Рейтинг: 0 / 0
16.11.2021, 09:34
    #40112240
Swv
Swv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Следующая запись
KreatorXXI
Swv,

правильно понимаю - если для конкретного человека 10 записей, то надо выдать 9 интервалов, если 100 записей, то 99 интервалов?


почти. надо на каждую запись выдать или ид или время следующей. последняя запись получается будет с пустым временем следующей записи
...
Рейтинг: 0 / 0
16.11.2021, 10:05
    #40112249
sysdba22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Следующая запись
звучит как задача для рекурсивного CTE
...
Рейтинг: 0 / 0
16.11.2021, 11:51
    #40112277
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Следующая запись
sysdba22,

скорее оконные функции.
...
Рейтинг: 0 / 0
16.11.2021, 13:47
    #40112326
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Следующая запись
kdvскорее оконные функции.
Да. Но, учитывая 2.5 и неопытность аффтара - я бы посоветовал ему использовать
PSQL. Там эта задача решается "в лоб".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.11.2021, 13:52
    #40112331
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Следующая запись
Dimitry Sibiryakov

kdvскорее оконные функции.

Да. Но, учитывая 2.5 и неопытность аффтара - я бы посоветовал ему использовать
PSQL. Там эта задача решается "в лоб".


+100500. Swv, пиши хранимку. Всё равно просматривать всю таблицу. Пускай цикл в порядке человек-дата-время и считай.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Следующая запись / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]