powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выбрать определенное кол-во записей рекурсией
3 сообщений из 3, страница 1 из 1
Выбрать определенное кол-во записей рекурсией
    #40009028
workhardplay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня, имеется запрос, с лимитом в 10 записей. БД большая, поэтому по условию выбирается огромное кол-во записей, а затем обрубается до 10. Хочется переписать запрос рекурсивно, чтобы как только нашлось 10 подходящих записей запрос останавливался. Прошу помощи, пример запроса прикладываю

select a, b, c, d from table t
WHERE (
(a < t.f OR a IS NULL) AND
(b < (current_timestamp - interval '1 seconds')) and
(c IS NULL OR coalesce(c, 0) < t.q) and
(d IS NULL OR coalesce(d, 0) < t.m) and
(t.h = 11)
ORDER BY t.m ASC NULLS FIRST, t.q DESC
limit 10
...
Рейтинг: 0 / 0
Выбрать определенное кол-во записей рекурсией
    #40009070
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
workhardplay
Всем доброго дня, имеется запрос, с лимитом в 10 записей. БД большая, поэтому по условию выбирается огромное кол-во записей, а затем обрубается до 10. Хочется переписать запрос рекурсивно, чтобы как только нашлось 10 подходящих записей запрос останавливался. Прошу помощи, пример запроса прикладываю

select a, b, c, d from table t
WHERE (
(a < t.f OR a IS NULL) AND
(b < (current_timestamp - interval '1 seconds')) and
(c IS NULL OR coalesce(c, 0) < t.q) and
(d IS NULL OR coalesce(d, 0) < t.m) and
(t.h = 11)
ORDER BY t.m ASC NULLS FIRST, t.q DESC
limit 10


А с чего вы считаете что рекурсивная реализация вам как то поможет или сделает быстрее?
Вы бы план показали сначала с результатами выполнения что ли...
А заодно результаты
select count(*) from table;
и
select count(*) from table where (все эти ваши странные условия);

видя вот такой вот запрос я бы под него попробовал бы индекс сделать правильный для начала.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Выбрать определенное кол-во записей рекурсией
    #40009132
MikeR.Ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для рекурсии используют CTE
Только надо понимать, что рекурсия сильно много потребляет ресурсов в любых языках.
Ну и реально лучше начать с изучения плана запроса.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выбрать определенное кол-во записей рекурсией
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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