2009-06-21 74 views
1

我是MySQL的新手,但我已經使用了一段時間的Oracle。我對MySQL的LIMIT關鍵字有點困惑。這個關鍵字是否意味着每次執行查詢時返回的數據的順序都是相同的?如果將更多數據添加到影響查詢的表中,該怎麼辦?如果沒有排序條款存在,數據如何排序?MySQL的LIMIT關鍵字是否保證返回數據的順序?

回答

4

不,LIMIT是非確定性的。排序取決於數據,使用的索引,mysql版本之間的內部更改,磁盤上的數據順序等。

通常情況下,您會將LIMITORDER BY組合起來以避免這種情況。

1

除非您指定ORDER BY,否則無法保證首先返回哪些行。

但實際上,訂單通常會與聚集索引訂單相匹配,並且在調用之間不會改變。不要依賴這種行爲。

2

LIMIT不會對返回的數據施加任何排序。

不保證每次執行限制時都會返回相同的順序,除非使用ORDER BY子句。如果插入數據,這可能會影響有序和無序結果的結果。

如果您省略了ORDER BY子句,它基本上由數據庫決定排序,並且可能基於表的索引方式。隨着表格被重新索引和/或添加更多數據,這將隨着時間而改變。

相關問題