Данные таблицы курорта (переупорядочения) - PullRequest
4 голосов
/ 27 мая 2010

Какой самый быстрый способ переупорядочить (преобразовать) таблицу так, чтобы физическое представление наиболее точно соответствовало логическому, используя PostgreSQL?

Ответы [ 3 ]

4 голосов
/ 27 мая 2010

Заказанные данные не означают, что вам больше не понадобится пункт ORDER BY в ваших запросах.

Это просто означает, что логический порядок или данные, вероятно, соответствуют физическому порядку, а извлечение данных в логическом порядке (скажем, из сканирования индекса) с большей вероятностью приведет к последовательному доступу к чтению таблицы.

Обратите внимание, что ни MySQL, ни PostgreSQL не гарантируют, что INSERT … SELECT … ORDER BY приведет к упорядочению данных в таблице.

Чтобы упорядочить данные в PostgreSQL, вы должны определить индекс с заданным порядком и выполнить команду:

CLUSTER mytable USING myindex

Это перестроит таблицу и все индексы, определенные в ней.

1 голос
/ 27 мая 2010

Используйте CLUSTER , чтобы переупорядочить таблицу по заданному индексу.

(Кстати, ALTER TABLE ... ORDER BY ...)

1 голос
/ 27 мая 2010

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

Если вы хотите контролировать порядок на диске, единственный лучший способ - правильно определить кластеризованный индекс. Всегда.

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