【发布时间】:2019-02-14 11:05:28
【问题描述】:
PostgreSQL 允许 ORDER BY 在视图中,所以例如我可以这样写一个视图:
CREATE VIEW people_overview AS
SELECT
id
, name1
, name2
FROM person
ORDER BY
name2
, name1
假设我有一个应用程序,我现在像这样使用这个视图:
SELECT * FROM people_overview
然后应用读取所有数据并以某种方式将其显示给用户,例如使用网格。
在这种情况下,当将行返回给应用程序时,是否保证在视图中指定的顺序保持不变?
或者我最好将ORDER BY 编码到应用程序中?
【问题讨论】:
-
如果我在视图中看到
order by,我总是很害怕,因为 Postgres 不够聪明,无法删除无用的订单。做select * from people_overview order by id(所以我想你可以依赖它,但我仍然发现在最终选择中做order by更好的编码风格) -
ORDER BY可能很昂贵。如果有人想要查看数据而没有任何订单偏好,那么如果在视图定义中指定,ORDER BY 成本仍然存在。 -
好问题。它不应该保证视图中的顺序。但是,我在 Postgres 文档中找不到任何说明这一点的内容。
标签: sql postgresql sql-order-by