最近文章数量增加后,后台列表的查询速度开始明显下降。功能没有变化,但每次筛选都要等待更久。

先看执行计划

优化前先使用 EXPLAIN QUERY PLAN 检查查询路径。结果显示数据库需要扫描整张文章表,然后再对发布时间排序。

建立组合索引

文章列表通常同时使用状态和发布时间,因此为这两个字段建立组合索引,比各自建立单列索引更符合实际查询模式。

SQLsql
CREATE INDEX posts_status_published_at_idx
ON posts(status, published_at);

调整分页方式

数据量较小时,LIMITOFFSET 足够简单。数据持续增长后,可以使用上一页最后一条记录的发布时间作为游标,避免数据库跳过大量记录。

最终查询逻辑没有变复杂太多,但响应时间更稳定了。性能优化最重要的仍然是先测量,再针对真实瓶颈处理。