这是一个异想天开的问题,总是我想知道的事情,我想知道为什么它做的事情可能会加深我的理解.
假设我做"SELECT Top 10*FROM TableName".在短时间内,相同的10行返回,所以它似乎不是随机的.它们不是第一个或最后一个创建的.在我的大量样本大小...一个表中,它没有返回最小或最大自动递增主键值.
我还认为在考虑连接时问题会变得更加复杂.
我选择的数据库是MSSQL,但我认为这可能是一个有趣的问题,无论平台如何.
LBu*_*kin 12
如果不在SELECT语句上提供ORDER BY子句,则将以任意顺序返回行.
实际的顺序是未定义的,取决于哪些块/记录已经缓存在内存中,I/O的执行顺序,数据库服务器中的线程何时计划运行,等等.
订单没有任何押韵或理由,除非您提供ORDER BY,否则您不应该根据订单行的顺序做出任何预期.
如果调用查询没有对它们进行排序,我相信它们只是按照从磁盘读取的顺序返回.由于使用的连接类型或查找值的索引,这可能会有所不同.
如果表上有聚簇索引(并且您只是选择 - JOIN可以重新排序),您可以看到这一点 - 即使没有ORDER BY子句,SELECT也会以clustered-index-order返回行.