mysql深度分页优化

1:最基本的,列表查询只返回需要展示的字段,尽量少关联,筛选条件尽量放主表,例如这个sql,ac.catalog_id, e.content字段不需要列表展示,而且e.content字段数据量大,导致网络传输变慢

2:如果表的主键是自增的话,可以在前端查询时传上一页的最后一条记录的ID,例如:

java 复制代码
SELECT
	a.id,
	a.title,
	a.cover_image,
	a.publish_dt,
	a.article_status,
	a.create_time,
	a.create_user_name,
	a.create_user,
	a.create_data_source,
	a.intro,
	a.view_count,
	a.collect_count,
	a.praise_count,
	a.sort
FROM cms_article a
WHERE id > ?
ORDER BY id DESC
LIMIT ?;

3:使用子查询,可以先查出要的记录的id,然后再提取这些id的记录,这样的效率也可以

java 复制代码
SELECT
	a.id,
	a.title,
	a.cover_image,
	a.publish_dt,
	a.article_status,
	a.create_time,
	a.create_user_name,
	a.create_user,
	a.create_data_source,
	a.intro,
	a.view_count,
	a.collect_count,
	a.praise_count,
	a.sort
FROM cms_article a		
JOIN (SELECT id FROM cms_article ORDER BY id DESC limit ?,?) sub 
on a.id = sub.id	

4:业务上的优化,需要前端配合,比如当limit到1000以后,服务端一次返回500条或1000条记录,前端每次只展示10条20条,不需要一直与服务端做交互了,只是某一次查询的时候比较慢,这种就看业务是否能接受。

5:索引覆盖,查询的列如果时索引列,这样子不需要回表查性能也很高

6:参考一些市面上热门的产品,例如记录只限查询半年前或一年前的记录,再之后的记录就不能查询

相关推荐
q***23926 分钟前
MySQL数据库误删恢复_mysql 数据 误删
数据库·mysql·adb
合作小小程序员小小店7 分钟前
web网页开发,在线%图书管理%系统,基于Idea,html,css,jQuery,java,ssm,mysql。
java·前端·后端·mysql·jdk·intellij-idea
IUGEI9 分钟前
【MySQL】SQL慢查询如何排查?从慢查询排查到最终优化完整流程
java·数据库·后端·mysql·go
张较瘦_37 分钟前
[论文阅读] AI + 数据库 | 拆解智能数据库:交互、管理、内核三层革新,AI 如何重塑数据处理
数据库·论文阅读·人工智能
合作小小程序员小小店1 小时前
web网页开发,在线%食堂管理%系统,基于Idea,html,css,jQuery,java,ssm,mysql。
java·前端·mysql·html·intellij-idea·jquery
paperxie_xiexuo1 小时前
如何高效完成科研数据的初步分析?深度体验PaperXie AI科研工具中数据分析模块在统计描述、可视化与方法推荐场景下的实际应用表现
大数据·数据库·人工智能·数据分析
w***4811 小时前
Springboot项目本地连接并操作MySQL数据库
数据库·spring boot·mysql
司铭鸿2 小时前
图论中的协同寻径:如何找到最小带权子图实现双源共达?
linux·前端·数据结构·数据库·算法·图论
友友马2 小时前
『MySQL』 - 事务 (二)
数据库·mysql·oracle
薛晓刚2 小时前
OceanBase的嵌入式数据库:vscode+python+seekdb
数据库