您的当前位置:首页>全部文章>文章详情

【MySQL】mysql百万级数据表翻页查询特别慢的优化方式

CrazyPanda发表于:2024-11-14 10:21:31浏览:259次TAG: #mysql

最近遇到了mysql百万级数据表翻页查询特别慢的问题

查询第一页的时候,特别快:

而当数据达到百万级以上时,翻页查询就会特别慢

翻页查询直接达到了65秒。

从网上了解到优化的几种方式:
1. 索引优化:对查询频率高的字段建立索引,可以大幅提高查询速度。特别是对于用于排序和分页的字段,确保它们有适当的索引。
2. 分区表:将大表按照某个字段分成多个分区,可以提高查询效率,尤其是在查询时只搜索特定的分区。
3. 数据库垂直拆分:将一个大表按照某个字段拆成多个小表,减少单个表的数据量,从而提高查询速度。
4. 数据库水平拆分:将一个大表按照某个字段拆成多个相同结构的小表,可以将数据均匀地分配到多个服务器中,提高查询速度。
5. 优化查询语句:尽量避免使用子查询、不必要的JOIN等操作,减少查询的复杂度,从而提高查询速度。
6. 使用缓存:将热点数据或者计算结果缓存起来,减少对数据库的查询次数。
7. 数据库连接池:使用数据库连接池可以减少频繁创建和关闭连接所消耗的资源。
8. 升级硬件和软件:提高服务器的硬件配置,如内存、CPU、磁盘等,或者升级到更高版本的MySQL。
9. 优化LIMIT子句:避免使用大的偏移量(如LIMIT 100000, 100),因为这会导致MySQL扫描大量不必要的行。可以考虑使用基于主键的范围查询来替代。
10. 避免SELECT *:只选择需要的列,避免不必要的数据传输和处理。

最后解决方案,将翻页跳转按钮去掉,改换成上一页,下一页,按照最大最小id进行取值翻页查询,速度会快很多。

查询sql改成下面的样子,速度会快很多。

猜你喜欢

【MySQL】MySQL索引原理与慢查询优化
浏览目录# 一、索引介绍二、索引方法三、索引类型四、聚合索引和辅助索引五、测试索引六、正确使用索引七、组合索引八、注意事项九、查询计划十、慢日志查询十一、大数据量分页优化一、索引介绍#  一般的应用系统,读写的比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出现问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。什么是索引:简单来说,相当于图书的目录,可以帮助用户快速找到需要的内容。   在mysql中
发表于:2024-06-21 浏览:385 TAG:
【MySql】索引怎么提高查询的速度?
文章目录索引:怎么提高查询的速度?如何创建组合索引?组合索引的原理如何创建单字段索引?单字段索引的作用如何选择索引字段?索引是什么?单字段索引组合索引总结索引索引相关面试题MySQL索引的底层实现索引创建原则索引优缺点索引失效场景索引:怎么提高查询的速度?在超市信息系统刚刚开始运营的时候,因为数据量很少,每一次的查询都能很快拿到结果。但是,系统运转时间长了以后,数据量不断地累积,变得越来越庞大,很多查询的速度就变得特别慢。这个时候,我们就采用了 MySQL 提供的高效访问数据的方法—— 索引,有
发表于:2023-12-07 浏览:383 TAG:
【MySql】mysql如何正确设置主键?
文章目录主键:如何正确设置主键?业务字段做主键自增字段做主键手动赋值字段做主键主键总结主键:如何正确设置主键?前面我们在讲解存储的时候,有提到过主键,它可以唯一标识表中的某一条记录,对数据表来说非常重要。当我们需要查询和引用表中的一条数据记录的时候,最好的办法就是通过主键。只有合理地设置主键,才能确保我们准确、快速的找到所需要的数据记录。下面我们借助超市项目的实际需求,来讲解一下怎么正确设置主键?在超市项目中,店家想进行会员营销,相应的,我们就需要处理会员信息。会员信息表(demo.member
发表于:2023-12-08 浏览:337 TAG:
【MySQL】用时间戳按时间(年月日)分组统计
时间戳格式与时间格式的转化 (转为时间戳格式时,单位默认为秒,若需转为以毫秒单位,则结果*1000)SELECT UNIX_TIMESTAMP('2022-09-01 00:00:00'); SELECT FROM_UNIXTIME('1661961600','%Y-%m-%d %H:%i:%s');12精确时间范围的搜索SELECT * FROM table_name
发表于:2024-03-18 浏览:305 TAG:
【MySql】select * 查询慢的原因和优化方法
‌使用SELECT *查询语句会导致查询效率低下的原因主要包括‌:它会查询所有的列和行数据,包括不需要的和重复的列,因此会占用更多的系统资源,导致查询效率低下。此外,由于...
发表于:2024-10-21 浏览:279 TAG: #mysql
【MySql】mysql explain 查询详解
MySQL 的 EXPLAIN 语句是一个强大的工具,用于分析和优化查询的执行计划。它提供了关于 MySQL 如何执行查询的详细信息,包括表的访问顺序、访问方法、使用的索引、连接类型等。以下是 EXPLAIN 查询的详细解释:
发表于:2025-02-21 浏览:76 TAG: #mysql
【MySql】mysql数据库表分区设计实现
文章目录前言一、什么是mysql表分区?二、表分区有哪几种方案? 如何实现1、创建订单表2、添加订单的索引为联合索引(需要修改为索引联合索引,不然后面会报错)3、按照订单时间范围来分区4、向数据库插入数据(创建存储过程,循环插入2023到2025年的数据,数据时间间隔为半个小时1次)5、查询分区数据插入情况6、根据分区查询数据2.1 范围分区(Range Partitioning)2.2 列表分区 (List Partitioning)2.3 哈希分区 (hash Partinioning)2.
发表于:2024-07-16 浏览:389 TAG:
【MySql】存储与字段
文章目录1. 存储:一个完整的存储过程是怎样的?·创建MySQL数据库·确认字段·创建数据表·插入数据2. 字段:那么多字段类型,该怎么定义?·整数类型·浮点数类型和定点数类型·文本类型·日期与时间类型1. 存储:一个完整的存储过程是怎样的?在 MySQL 中,一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据。·创建MySQL数据库数据存储的第一步就是创建数据库。为什么不是直接创建数据表,而是创建一个数据库呢?从系统架构层次上看,MySQL数据库系统从大到小
发表于:2023-12-08 浏览:377 TAG:
【MySQL】一文带你了解数据库约束
文章目录1. 约束类型2.PRIMARY KEY:主键约束3.FOREIGN KEY:外键约束4.NOT NULL:非空约束5.UNIQUE:唯一约束5.DEFAULT:默认值约束6.总结1. 约束类型作用: 数据库约束是用于限制数据输入或数据更新的规则。数据库约束确保在表中只能插入符合规则的数据,以确保数据的完整性和一致性。 常见的数据库约束包括:主键约束:用于唯一标识表中的每一行数据,确保数据唯一性和完整性。外键约束:用于确保表之间数据的关系
发表于:2023-11-30 浏览:717 TAG:
【MySQL】库操作
第二篇:库操作#一、系统数据库#1.information_schema :虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列表息、权限信息、字符信息等 2.mysql:核心数据库,里面包含用户、权限、关键字等信息。不可以删除 3.performance_schema:mysql 5.5 版本后添加的新库,主要收集系统性能参数,记录处理查询请求时发生的各种事件、锁等现象 4.sys:mysql5.7 版本新增加的库,通过这个库可
发表于:2024-06-21 浏览:392 TAG: #mysql