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:参考一些市面上热门的产品,例如记录只限查询半年前或一年前的记录,再之后的记录就不能查询

相关推荐
酉鬼女又兒4 分钟前
SQL24 统计每个用户的平均刷题数
数据库·sql·mysql
雷工笔记38 分钟前
数据库|SQLServer2025安装教程
数据库·sqlserver
一只自律的鸡44 分钟前
【MySQL】第六章 子查询
数据库·mysql
Knight_AL1 小时前
Spring Boot 事件机制详解:原理 + Demo
java·数据库·spring boot
野人李小白1 小时前
DBeaver 界面友好,支持多种数据库,具备强大的 SQL 编辑、可视化查询、数据迁移及插件扩展功能,是开发者首选的数据库管理工具。
数据库·sql
山峰哥2 小时前
SQL索引优化实战:3000字深度解析查询提速密码
大数据·数据库·sql·编辑器·深度优先
观音山保我别报错2 小时前
消息队列项目基础知识总结
linux·服务器·数据库
jghhh012 小时前
MATLAB分形维数计算:1D/2D/3D图形的盒维数实现
数据库·matlab
weixin_462446232 小时前
一键安装 MySQL 5.7(CentOS 7)自动化脚本详解
mysql·centos·自动化
重生之绝世牛码3 小时前
Linux软件安装 —— PostgreSQL高可用集群安装(postgreSQL + repmgr主从复制 + keepalived故障转移)
大数据·linux·运维·数据库·postgresql·软件安装·postgresql高可用