在视图中订购是否保证选择顺序?

Mat*_*att 12 sql postgresql select

我认为使用某种顺序才有意义.我想要做的是ORDER BY在视图中包含该子句,以便该视图上的所有SELECTs都可以省略它.但是,我担心订购可能不一定会延续到SELECT,因为它没有指定订单.

是否存在视图指定的排序不会反映在该视图上的选择结果中的情况(视图中的order by子句除外)?

Mik*_*ll' 8

您不能指望任何没有显式ORDER BY子句的查询中的行顺序.如果您查询有序视图,但没有包含一个ORDER BY条款,如果它们的顺序正确,并且不希望它再次发生,那就会感到惊喜.

这是因为查询优化器可以根据查询,表统计信息,行计数,索引等以不同方式自由访问行.如果它知道您的查询没有ORDER BY子句,则可以按顺序忽略行顺序(咳嗽)以更快地返回行.

稍微偏离主题...

即使对于众所周知的排序规则,排序顺序也不一定在不同平台上相同.我知道在Mac OS X上排序UTF-8特别奇怪.(PostgreSQL开发人员称它为.)PostgreSQL依赖于strcoll(),我理解它依赖于OS语言环境.

我不清楚PostgreSQL 9.1将如何处理这个问题.在9.1中,您可以拥有多个索引,每个索引都具有不同的归类.一个ORDER BY不指定归类通常会使用底层的基表的列的排序规则,但会出现什么优化做的指数,指定比基表中的未索引的列不同的排序规则?