我是MySQL的新手,但我已经使用了Oracle一段时间了。我对MySQL的LIMIT
关键字感到有些困惑。此关键字是否暗示每次执行查询时返回数据的顺序都相同?如果将更多数据添加到影响查询的表中会怎样?如果不存在order-by子句,数据将如何排序?
答案 0 :(得分:4)
不,LIMIT
是非确定性的。排序取决于数据,使用的索引,mysql版本之间的内部更改,磁盘上的数据顺序等。
通常您会将LIMIT
与ORDER BY
合并以避免这种情况。
答案 1 :(得分:2)
LIMIT不会对返回的数据施加任何排序。
除非使用ORDER BY子句,否则无法保证每次执行限制都会返回相同的顺序。如果插入数据,这可能会影响有序和无序结果。
如果省略ORDER BY子句,则基本上由数据库来决定排序,它可能基于表的索引方式。随着表的重新索引和/或添加更多数据,这将随着时间的推移而变化。
答案 2 :(得分:1)
除非您指定ORDER BY,否则无法保证首先返回哪些行。
但实际上,订单通常会与聚簇索引订单匹配,并且不会因调用而异。不要依赖这种行为。