簡體   English   中英

通過MySQL表進行SELECT的最快方法是從某一行向后記錄?

[英]Fastest way to SELECT through MySQL table records backwards from a certain row?

表格超過1800萬行:

SELECT * FROM tbl WHERE id > 10000000 LIMIT 30

花費了0.0724秒

SELECT * FROM tbl WHERE id < 10000000 ORDER BY id DESC LIMIT 30

花費0.0565秒

這是在MySQL中的特定行之前選擇特定數目的記錄的最快方法嗎?

看起來足夠好,但是MySQL是否不必在SELECT-ing 30行之前先對這1000萬行進行降序排序?

我問這是因為我不太確定我提出的這個查詢。 它看起來確實可以運行並且足夠快,但是查看語法語義,我不太確定。

MySQL是否足夠聰明,知道它不必訂購所有這1000萬行?

還是有更好的方法來實現這一目標?

它不會有在所有的行排序,如果你對一個索引id柱(或有它作為主鍵的初始部分)。

它將僅使用該索引,給出已排序的數據,僅獲取前三十個元素。

是的,如果它不能有效地按排序順序檢索行,則可能必須先獲得批次然后再進行排序。 但這將是非常糟糕的DBMS設計。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM