我认为使用某种顺序才有意义。我想做的是ORDERBY在视图中包括该子句,以便该视图上的所有SELECTs都可以忽略它。但是,我担心该订单不一定会延续到SELECT,因为它没有指定订单。
ORDERBY
SELECT
是否存在一种情况,即视图指定的顺序不会反映在该视图上的select结果中(该视图中的order by子句除外)?
您不能指望没有显式ORDER BY子句的任何查询中的行顺序。如果查询有序视图,但没有包括ORDER BY子句,则如果它们的顺序正确,请感到惊喜,并且不要期望它再次发生。
ORDER BY
这是因为查询优化器可以自由地以不同的方式访问行,具体取决于查询,表统计信息,行数,索引等。如果知道查询没有ORDER BY子句,则可以随意忽略行顺序,以便(咳嗽)更快地返回行。
有点题外话。 。。
即使对于众所周知的归类,跨平台的排序顺序也不一定相同。我知道在Mac OS X上对UTF-8进行排序特别奇怪。(PostgreSQL开发人员称其为_Breaked_。)PostgreSQL依赖于strcoll(),据我所知它依赖于OS语言环境。
我不清楚PostgreSQL9.1如何处理这个问题。在9.1中,您可以有多个索引,每个索引具有不同的排序规则。通过一个订单不指定归类通常会使用底层的基表的列的排序规则,但会出现什么优化做的 指数 ,指定不同的排序规则,而不在基表中的未索引的列?