geebv
@geebv

Как настроить таблицу что бы данные сохранены были в отсортированном виде?

Пусть в таблицу пишутся timeseries данные.
Необходимо что бы по запросу SELECT * FROM tablename LIMIT 1 гарантированно доставалась последняя запись
В cassandra например есть такая опция CLUSTERING ORDER.
Как это достичь в psql?
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
terrier
@terrier
SELECT в SQL оперирует сетами, то есть неупорядоченными множествами. Порядок в котором будут выданы результаты вообще говоря неопределен и зависит от реализации.
А вот достать последнее значение из индекса по таймстемпу - быстрая операция, занимающая O(1)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@akileev
Java / Scala developer
Насколько я знаю гарантированно этого в PostgreSQL не достичь.

Но можно создать индекс для таблицы, а потом

CREAT INDEX index_name ON tablename (column_name DESC NULLS LAST)
CLUSTER tablename USING index_name


После этого данные в таблице будут реорганизованы в том порядке, в котором отсортированы данные в индексе. Только это разовая операция, нужно будет периодически ее снова выполнять.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы