最近文章数量增加后,后台列表的查询速度开始明显下降。功能没有变化,但每次筛选都要等待更久。
先看执行计划
优化前先使用 EXPLAIN QUERY PLAN 检查查询路径。结果显示数据库需要扫描整张文章表,然后再对发布时间排序。
建立组合索引
文章列表通常同时使用状态和发布时间,因此为这两个字段建立组合索引,比各自建立单列索引更符合实际查询模式。
SQLsql
CREATE INDEX posts_status_published_at_idx
ON posts(status, published_at);调整分页方式
数据量较小时,LIMIT 和 OFFSET 足够简单。数据持续增长后,可以使用上一页最后一条记录的发布时间作为游标,避免数据库跳过大量记录。
最终查询逻辑没有变复杂太多,但响应时间更稳定了。性能优化最重要的仍然是先测量,再针对真实瓶颈处理。

7 评论
111
Is everyone going to ignore the fact that Rick Astley looks like a twelve year old boy but has a uniquely deep voice?
It was something said on vh1 I love the 80s episode yesrs before reddit was widely used.
2.5 Gbps Enterprise grade transport for China Unicom provided by China Telecom
🙂🙂🙂🙂🙂🙂🙂
本文介绍 Retypeset 主题支持的 Markdown 扩展功能,包括语法示例与效果展示。
评论自身及回复 ID 仍继续使用 UUID。