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

相关推荐
小陈工3 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
0xDevNull7 小时前
MySQL数据冷热分离详解
后端·mysql
科技小花7 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸7 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain7 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希8 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神8 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员8 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java8 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿9 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb