【MySQL】mysql百万级数据表翻页查询特别慢的优化方式
CrazyPanda发表于:2024-11-14 10:21:31浏览:259次
最近遇到了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中
- 【MySql】索引怎么提高查询的速度?
- 文章目录索引:怎么提高查询的速度?如何创建组合索引?组合索引的原理如何创建单字段索引?单字段索引的作用如何选择索引字段?索引是什么?单字段索引组合索引总结索引索引相关面试题MySQL索引的底层实现索引创建原则索引优缺点索引失效场景索引:怎么提高查询的速度?在超市信息系统刚刚开始运营的时候,因为数据量很少,每一次的查询都能很快拿到结果。但是,系统运转时间长了以后,数据量不断地累积,变得越来越庞大,很多查询的速度就变得特别慢。这个时候,我们就采用了 MySQL 提供的高效访问数据的方法—— 索引,有
- 【MySql】mysql如何正确设置主键?
- 文章目录主键:如何正确设置主键?业务字段做主键自增字段做主键手动赋值字段做主键主键总结主键:如何正确设置主键?前面我们在讲解存储的时候,有提到过主键,它可以唯一标识表中的某一条记录,对数据表来说非常重要。当我们需要查询和引用表中的一条数据记录的时候,最好的办法就是通过主键。只有合理地设置主键,才能确保我们准确、快速的找到所需要的数据记录。下面我们借助超市项目的实际需求,来讲解一下怎么正确设置主键?在超市项目中,店家想进行会员营销,相应的,我们就需要处理会员信息。会员信息表(demo.member
- 【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
- 【MySql】select * 查询慢的原因和优化方法
- ‌使用SELECT *查询语句会导致查询效率低下的原因主要包括‌:它会查询所有的列和行数据,包括不需要的和重复的列,因此会占用更多的系统资源,导致查询效率低下。此外,由于...
- 【MySql】mysql explain 查询详解
- MySQL 的 EXPLAIN 语句是一个强大的工具,用于分析和优化查询的执行计划。它提供了关于 MySQL 如何执行查询的详细信息,包括表的访问顺序、访问方法、使用的索引、连接类型等。以下是 EXPLAIN 查询的详细解释:
- 【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.
- 【MySql】存储与字段
- 文章目录1. 存储:一个完整的存储过程是怎样的?·创建MySQL数据库·确认字段·创建数据表·插入数据2. 字段:那么多字段类型,该怎么定义?·整数类型·浮点数类型和定点数类型·文本类型·日期与时间类型1. 存储:一个完整的存储过程是怎样的?在 MySQL 中,一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据。·创建MySQL数据库数据存储的第一步就是创建数据库。为什么不是直接创建数据表,而是创建一个数据库呢?从系统架构层次上看,MySQL数据库系统从大到小
栏目分类全部>