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

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

时间:原作者:0个回答

85 3

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

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

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

原作者:
...