我知道,如果SQL查询没有按参数的顺序排序,则根本没有排序。当不按订单运行查询时,我希望看到相同的结果以不同的顺序进行。
但是,结果仍然按顺序返回(即有一行1,一行2等等),只是不可靠--因此,如果不对结果进行排序,将由什么来确定返回行的顺序(想必是逐个案例的)。
具体来说,我的经验是使用MySQL,但我从理论上对此感到好奇,而不是试图解决特定的问题。
编辑:如果我真的想订购一个查询,我总是使用订单--这只是好奇。
发布于 2014-12-08 14:50:33
由于明显的原因,数据库供应商没有发布关于无序结果集中将出现哪些顺序行的信息(这只会导致依赖于不可靠的当前实现的人)。
然而,常识告诉我们,促成明显秩序的最可能因素包括:
发布于 2014-12-08 14:35:46
在没有指定ORDER BY的情况下,如何决定行顺序的答案是:许多内部考虑因素可能取决于数据如何存储在磁盘(或内存中)、数据库执行查询的操作类型(例如JOIN),以及数据库引擎可能发生变化的许多其他因素。
底线是,除非使用ORDER BY,否则SQL标准都说dbms根本不需要保证排序结果集。因此,没有理论上的默认。如果需要以某种方式对数据进行排序,请始终使用ORDER BY。
发布于 2014-12-08 14:29:57
这取决于数据库:如果没有指定聚集索引,在一些花招下 Server将对聚集索引进行排序,因为这与磁盘上存储行的方式近似。
对于其他do,所有的赌注都取消了,您可以理解为什么:尽管其他供应商不一定采用与Server相同的机制,但他们当然希望在磁盘/缓冲器/日志/块级别上可以自由地重新设计内容,而不必重写datase/查询解析引擎的部分。
其次,SQL作为一种声明性语言,与您,用户有一个协议,您告诉它您想要什么,它决定如何获得它。如果不指定排序,那么就不能对返回的数据的顺序做出任何假设。
编辑:在评论中指出的但书中添加。
https://stackoverflow.com/questions/27360116
复制相似问题