performance - 在索引之后,具有偏移量("限制 500000的mysql限制,10") 甚至缓慢?

  显示原文与译文双语对照的内容
101 3

我有一个 int 字段的表格,我们把它叫做 createTime 。 这张桌子由几百万条记录组成。 现在,我想运行查询:


select * from `table` order by `createTime` desc limit 500000, 10



我已经为 createTime 创建了索引,但是查询运行得非常慢。 什么原因如何改进它?

下面是解释的内容:


id 1


select_type simple


table table


type index


possible_keys null


key createTime


key_len 4


ref null


rows 500010


extra



对于偏移,它在小的时候工作得更快。

时间: 原作者:

85 3

一般规则:对于大型表,避免 OFFSET

[A]的偏移量增加,执行查询的时间逐渐增加,这意味着处理非常大的表将花费非常长的时间。 原因是偏移工作在表中的行的物理位置,该位置未被索引。 因此要在偏移量x 处查找一行,数据库引擎必须遍历 0到x 之间的所有行。

一般的拇指法则是"在限制子句中从不使用偏移量"。 对于小型表,你可以能不会注意到任何差异,但是有超过行的表会显示巨大的性能。

...