Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сохранить при запросе порядок строк из подзапроса / 6 сообщений из 6, страница 1 из 1
03.02.2016, 11:52
    #39161759
torbasow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранить при запросе порядок строк из подзапроса
Допустим, есть такой запрос:
Код: sql
1.
2.
3.
SELECT *
FROM (подзапрос) AS _subquery
WHERE условия


Подзапрос упорядоченный. По каким полям — в общем случае, неизвестно. Модифицировать его нельзя (а то бы можно было бы пронумеровать строки в выборке и отсортировать основной запрос по этому номеру, но — нет). Обойтись без обёртки нельзя ввиду необходимости условий .
Вопрос вот в чём: можем ли мы как-либо модифицировать основной запрос, чтобы в выборке строки гарантированно шли в том же порядке, в котором они выдаются подзапросом?
...
Рейтинг: 0 / 0
03.02.2016, 12:24
    #39161822
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранить при запросе порядок строк из подзапроса
torbasow, нэтъ.
Правда, не гарантированно они и так будут идти в том же порядке.
...
Рейтинг: 0 / 0
03.02.2016, 12:26
    #39161831
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранить при запросе порядок строк из подзапроса
torbasow,
единственный выход -
второй order by снаружи, если его нет в виде возврата откуда-то, то надо его параллельно возвращать и потом приклеить к основному запросу.
...
Рейтинг: 0 / 0
03.02.2016, 12:44
    #39161862
p2.
p2.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранить при запросе порядок строк из подзапроса
torbasow,

оберни через функцию.
...
Рейтинг: 0 / 0
03.02.2016, 13:10
    #39161906
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранить при запросе порядок строк из подзапроса
torbasow,

если именно как подзапрос, и он НЕ требует сам по себе материализации [не агрегатный и не distinct]-- то даже порядок выполнения вы не можете гарантировать -- оптимайзер имеет полное право проигнорировать промежуточный order by вообще. и много что ещё сделать "не так, как написано"

если вы сунете его (подзапрос) в with, то текущая реализация cte в постгресе его материализует. далее уже можете пытаться выдрать из него row_number(). стоит ли на это закладываться -- неясно. вдруг перепишут реализацию.
...
Рейтинг: 0 / 0
04.02.2016, 09:45
    #39162640
torbasow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранить при запросе порядок строк из подзапроса
qwwq,

Ага, спасибо. Но row_number() тогда, наверное, уже ни к чему, если основной запрос будет выдавать выборку из CTE с сохранением её порядка,— разве что если потребуется ещё с чем-нибудь пересекать результаты запроса.

Специфика нашего проекта такова, что нельзя совершенно исключить расчёт только на текущую реализацию. Это не идеальный, но рассматриваемый вариант.

В связи с этим, не можете ли ткнуть ссылку на надёжное подтверждение такого поведения текущей реализации?
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сохранить при запросе порядок строк из подзапроса / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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