Seb*_*wak 3 mysql indexing performance limit
我有一张带有int田地的桌子,让我们称之为createTime.该表包含数百万条记录.现在我想运行查询:
select * from `table` order by `createTime` desc limit 500000, 10
Run Code Online (Sandbox Code Playgroud)
我已经创建了一个索引createTime,但查询运行缓慢.什么原因?我怎样才能改进它?
这是EXPLAIN所说的:
id 1
select_type simple
table table
type index
possible_keys null
key createTime
key_len 4
ref null
rows 500010
extra
Run Code Online (Sandbox Code Playgroud)
至于偏移量,当它很小时它的工作速度要快得多.
一般规则:避免OFFSET使用大表.
[A]偏移量增加,查询执行所需的时间逐渐增加,这可能意味着处理非常大的表将花费很长时间.原因是因为offset对表中没有索引的行的物理位置起作用.因此,要在偏移量x处找到行,数据库引擎必须遍历从0到x的所有行.
一般的经验法则是"绝不使用限制条款中的偏移量".对于小型表,您可能不会注意到任何差异,但对于超过一百万行的表,您将看到巨大的性能提升.