合理使用MySQL的Limit进行分页
这篇讲的是如何通过合理使用MySQL的LIMIT子句来优化分页查询,避免性能陷阱。作者从一位开发者遇到的数据库查询变慢的案例切入,对方的单表数据量已超过2G,且仍在使用效率低下的MyISAM引擎。 文章核心剖析了“大偏移量LIMIT”这一常见分页写法的性能瓶颈。当使用`LIMIT 1000000, 10`这样的语句时,数据库需要扫描并丢弃前一百万行数据,仅为了返回最后10行,这会导致巨大的IO和CPU开销。作者明确指出这种写法在数据量增长后会迅速成为系统拖累。 针对问题,文章给出了具体的优化策略:一是通过添加索引并确保查询能利用覆盖索引来减少回表;二是更推荐采用基于索引列的“书签式”分页,例如记住上一页最后一条记录的ID,改用`WHERE id > last_id LIMIT 10`的方式,使数据库能直接通过索引定位,极大提升查询效率。 文章最后强调,在高并发或大数据量的业务场景下,提前规划和优化分页方式至关重要,盲目依赖简单LIMIT会埋下严重的性能隐患。