Хобрук: Ваш путь к мастерству в программировании

Сортировка Postgres по умолчанию по идентификатору - worldship

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

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


  • Не могли бы вы создать представление рассматриваемой таблицы, в котором элементы упорядочены по идентификатору? 05.07.2011

Ответы:


1

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

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

05.07.2011
  • Это было именно то, что мне было нужно (на самом деле не парень из БД, кроме того, что мне нужно было знать. 05.07.2011

  • 2

    Не существует такого понятия, как «сортировка по умолчанию». Строки в таблице не сортируются.

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

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

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

    05.07.2011

    3

    Что бы это ни стоило, что, вероятно, немного, но порядок PostgreSQL «по умолчанию» основан на времени последнего обновления записей. Последние обновленные записи будут отображаться последними.

    30.04.2020

    4

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

    29.04.2013
  • Это не правильно. Даже если поиск выполняется с помощью индекса, общий порядок результатов может не соответствовать значениям индекса, и это совершенно определенно не гарантируется (если вообще высока вероятность того, что порядок индексов будет сохранен). 16.06.2015
  • Это не правильно. Индексы появляются, когда данные уже получены, поэтому они не помогут. Скорее это запутает пользователя тем, в каком индексе присутствуют нужные данные. 27.08.2019
  • Новые материалы

    Получение стоковых обновлений с помощью Python
    Для начинающего финансового аналитика Введение Описание: Этот проект Python создает скрипт для получения текущих обновлений акций с финансового веб-сайта Yahoo. Для этого проекта мы..

    Это все, что вам нужно знать о Kotlin в 2022 году
    Добро пожаловать! Kotlin — это язык программирования, популярность которого, кажется, растет, его действительно можно использовать для создания чего угодно, и если вы хотите узнать о Kotlin,..

    Текстовый графический интерфейс с Lanterna на Java
    Мой опыт работы с компьютерами (и текстовыми графическими пользовательскими интерфейсами) начался еще в восьмидесятых, когда я был ребенком, на дне рождения друга. Это был «новенький» Amstrad..

    Перезарядите свой мозг: умопомрачительный потенциал мозговых компьютерных интерфейсов
    Способность читать свои мысли и управлять объектами разумом долгое время были предметом человеческого любопытства, ограниченного областью научной фантастики… то есть до сих пор? С технологией,..

    Основы C# — Нулевой оператор объединения (??)
    Оператор ?? называется null-coalescing operator . Этот оператор используется для предоставления значения по умолчанию, если значение операнда в левой части оператора равно null ...

    Сравнение номеров версий в C++ с использованием синтаксического анализа строк
    Номера версий обычно используются для обозначения развития или обновлений программного обеспечения или любого другого продукта. При работе с номерами версий в C++ может быть полезно сравнить две..

    В мир искусственного интеллекта…
    ИИ — это новое топливо в современном мире. Куда бы вы ни обратились, с кем бы вы ни разговаривали — они, как правило, упоминают об ИИ хотя бы раз в ходе разговора. ИИ гудит повсюду. У каждого..