使用PostgreSQL重新排序(求助)表以使物理表示与逻辑最匹配的最快方法是什么?
答案 0 :(得分:4)
订购数据并不意味着您的查询中不再需要ORDER BY
子句。
这只是意味着逻辑顺序或数据可能与物理顺序匹配,并且按逻辑顺序(例如,从索引扫描)检索数据将更有可能导致对表的顺序读取访问。 / p>
请注意,MySQL
和PostgreSQL
都不保证INSERT … SELECT … ORDER BY
会导致数据在表格中排序。
要在PostgreSQL
中订购数据,您应该使用给定的顺序定义索引并发出以下命令:
CLUSTER mytable USING myindex
这将重建表及其上定义的所有索引。
答案 1 :(得分:1)
插入顺序最终并不总是控制表中的顺序。表按其聚簇索引排序(如果有)。如果他们没有,那么订单在技术上是未定义的,尽管在许多情况下假设他们按照插入顺序排序可能是安全的,但这并不意味着他们会保持这种状态。由于缺乏特定的排序,数据库引擎可以自由重新排序,因为它认为适合优化检索。
如果要控制磁盘上的顺序,最好的方法是正确定义聚簇索引。总是
答案 2 :(得分:1)
使用CLUSTER按给定索引重新排序表。