当前位置: 首页 > 面试题库 >

按顺序排序是否保证选择的顺序?

公羊雅达
2023-03-14
问题内容

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

是否存在一种情况,即视图指定的顺序不会反映在该视图上的select结果中(该视图中的order by子句除外)?


问题答案:

您不能指望没有显式ORDER BY子句的任何查询中的行顺序。如果查询有序视图,但没有包括ORDER BY子句,则如果它们的顺序正确,请感到惊喜,并且不要期望它再次发生。

这是因为查询优化器可以自由地以不同的方式访问行,具体取决于查询,表统计信息,行数,索引等。如果知道查询没有ORDER BY子句,则可以随意忽略行顺序,以便(咳嗽)更快地返回行。

有点题外话。 。。

即使对于众所周知的归类,跨平台的排序顺序也不一定相同。我知道在Mac OS X上对UTF-8进行排序特别奇怪。(PostgreSQL开发人员称其为_Breaked_。)PostgreSQL依赖于strcoll(),据我所知它依赖于OS语言环境。

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



 类似资料:
  • 如果我有以下Python代码 是否保证始终是,或者是否可以对过渡元素进行其他排序?

  • 是否有任何保证在顺序和有序流上的操作是按遇到顺序处理的? 我是说,如果我有这样的代码: 是否可以保证它将按照生成范围的遇到顺序执行myFunction()调用? 我找到了Stream类的JavaDocs草案,它明确地说明了以下内容: 对于顺序流管道,如果管道源具有已定义的遇到顺序,则所有操作都按照管道源的遇到顺序执行。 但是它没有提到顺序流,这个例子是针对并行流的(我的理解是,顺序流和并行流都是正

  • 问题内容: 如果我创建这样的对象: 生成的对象会 总是 这样吗? 也就是说,属性的顺序是否与我添加它们的顺序相同? 问题答案: 自ES2015起,对象的迭代顺序遵循一组特定的规则,但不(始终)遵循插入顺序。简而言之,迭代顺序是字符串键的插入顺序和数字键的升序的组合: 使用数组或Map对象可能是实现此目的的更好方法。Map与密钥共享一些相似之处Object并保证密钥按插入顺序进行迭代,无一例外: M

  • 问题内容: 我有类似的东西 如果我只是这样做,它将以ID升序返回行。有没有一种方法可以按照IN语句中给出的顺序取回行? 问题答案: 您应该使用“ ORDER BY FIELD”。因此,例如:

  • 问题内容: 假设我有一个查询“ select * from子句,其中id在(0,2,5,1,3)中”,我实际上希望返回的行以它们在where子句中指定的相同顺序返回。ID的顺序将随查询的不同而改变,并且该顺序没有模式。 我知道可以更改数据模型,创建临时表等。但是请相信我,这些类型的解决方案在我的情况下将行不通。我也无法在应用程序代码中更改结果对象的顺序。 我还知道,不同的数据库引擎对事物的排序方式