Postgres по умолчанию сортировка по id - worldship - PullRequest
12 голосов
/ 05 июля 2011

Мне нужно настроить worldship, чтобы извлечь из одной из наших баз данных postgres. Мне нужно, чтобы пакеты сортировались по идентификатору. У меня нет никакого способа (о котором я знаю), чтобы worldship отправлял заказ по пункту, поэтому мне нужно иметь значение по умолчанию для записей, возвращаемых по id.

Во второй заметке я понятия не имею, как сортировки по умолчанию в postgres выглядят так, как в прошлый раз, когда запись была изменена, поэтому, если я пишу две записи с идентификатором 1,2, то меняю запись 2, когда я запускаю запрос, он возвращает их с первой записью 2.

Ответы [ 3 ]

28 голосов
/ 05 июля 2011

Строки возвращаются в неуказанном порядке, согласно спецификациям sql, если только вы не добавите порядок по предложению. В Postgres это означает, что вы получите строки в основном порядке, в котором строки читаются на диске.

Если вы хотите получить последовательный заказ без необходимости добавлять заказ по предложению, создайте представление, как предлагается в комментарии Джека.

7 голосов
/ 05 июля 2011

Нет такой вещи как "сортировка по умолчанию".Строки в таблице не отсортированы.

Вы можете подделать это с помощью представления (как предложил Джек Мани), что вы никак не можете повлиять на порядок возвращаемых строк.

Но если вы сделаете это, помните, что добавление дополнительного ORDER BY к SELECT на основе этого представления приведет к сортировке данных дважды.

Другой вариант может бытьвыполните команду CLUSTER для этой таблицы, чтобы физически упорядочить строки на диске в соответствии с нужным столбцом.Но этот подоконник не гарантирует , что строки возвращаются в указанном порядке.Даже с простой SELECT * FROM your_table (но шансы для этого достаточно высоки).Вам нужно будет регулярно выполнять этот оператор, поскольку порядок, созданный командой CLUSTER, не поддерживается автоматически.

0 голосов
/ 29 апреля 2013

Вы можете в конечном итоге использовать отсортированный индекс, который должен гарантировать вам порядок извлеченных строк в случае, если план запроса достигнет индекса, или если вы его принудительно используете, но этот подход будет более чем обходным :). ORDER BY предложение - это путь, как уже упоминалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...