MySQL的LIMIT关键字是否保证返回数据的顺序?

时间:2009-06-21 11:06:26

标签: mysql database

我是MySQL的新手,但我已经使用了Oracle一段时间了。我对MySQL的LIMIT关键字感到有些困惑。此关键字是否暗示每次执行查询时返回数据的顺序都相同?如果将更多数据添加到影响查询的表中会怎样?如果不存在order-by子句,数据将如何排序?

3 个答案:

答案 0 :(得分:4)

不,LIMIT是非确定性的。排序取决于数据,使用的索引,mysql版本之间的内部更改,磁盘上的数据顺序等。

通常您会将LIMITORDER BY合并以避免这种情况。

答案 1 :(得分:2)

LIMIT不会对返回的数据施加任何排序。

除非使用ORDER BY子句,否则无法保证每次执行限制都会返回相同的顺序。如果插入数据,这可能会影响有序和无序结果。

如果省略ORDER BY子句,则基本上由数据库来决定排序,它可能基于表的索引方式。随着表的重新索引和/或添加更多数据,这将随着时间的推移而变化。

答案 2 :(得分:1)

除非您指定ORDER BY,否则无法保证首先返回哪些行。

但实际上,订单通常会与聚簇索引订单匹配,并且不会因调用而异。不要依赖这种行为。