sql - 有没有办法在 postgres 中存储预先排序的行?

标签 sql postgresql

考虑一个只读表T,这个表的查询模式是:

select some_columns
from T
where some_conditions
order by fixed_col1, fixed_col2

有没有办法让我在运行时省略 order by 子句,离线预排序表并将排序后的行存储在 T 中,这样当我选择 如果没有 order by,所选行已经排序了吗?

PS:行为必须在某处记录,或者是 PG 社区的常识。

最佳答案

您可以使用 CLUSTER command ,或者您可以通过命令 CREATE TABLE xxx AS SELECT ... ORDER BY 创建新表。你仍然应该使用 ORDER BY 语句,因为 PostgreSQL 已经优化了更大表的读取,并尝试对更多进程使用同步读取。这种同步可以这样做,一个进程的表读取从表的 1/3 开始 - 读取到结束,返回开始并读取第一个 1/3。所以 Postgres 也不保证按物理顺序读取数据。

关于sql - 有没有办法在 postgres 中存储预先排序的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64548175/

相关文章:

ruby-on-rails - 使用 pg_search gem 在 Heroku 上进行全文搜索

postgresql - 如何在不使用 LIKE 中的替换函数的情况下使用 PostgreSQL 进行转义

php - 是否可以像 % :name% 这样的名称绑定(bind)参数

sql - 如何为自引用表创建一个简单的 Select ?

mysql - 从列表中获取所有顺序 block

mysql - 基于 3 列使用相同的 id 选择多行数据

mysql - 如何优化sql连接查询

c# - Npgsql:准备好的语句如何

sql - 如何将多列的内容插入到sql中的新列中?

postgresql - 与其他聚合的 PostGis 聚类