从某一行向后记录 SELECT 到 MySQL table 的最快方法?

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

table 超过 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 秒

这是 SELECT 在 MySQL 中特定行之前的特定数量记录的最快方法吗?

看起来不错,但是 MySQL 不必先对这 1000 万行进行降序排序,然后再 SELECT-ing 30 行吗?

我问这个是因为我不太确定我提出的这个查询。它看起来确实有效并且速度足够快,但看看语法语义,我不太确定。

MySQL 是否足够聪明,知道它不必对所有 1000 万行进行排序?

或者有什么更好的方法可以做到这一点?

如果您在 id 列上有索引(或将其作为主索引的初始部分),则 根本不需要对行进行排序 键)。

它将简单地使用那个索引,给出已经排序的数据,并且只获取前三十个元素。

是的,如果它不能按排序顺序有效地检索行,它可能必须获取批次然后进行排序。但那将是相当糟糕的 DBMS 设计。