Mysql Limit 调优

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Mysql Limit 调优
  1. 建表与插入数据
  2. SQL对比

1. 基本数据

  • 创建表

CREATETABLE student

 (

  id  int(10)NOTNULLAUTO_INCREMENT,

  name varchar(25)DEFAULTNULL,

  age tinyint(2)DEFAULTNULL,

  live varchar(255)DEFAULTNULL,

  PRIMARYKEY(id)

 );

  • 批量插入1百万条数据

DROPPROCEDUREIFEXISTS insert_Stu;

DELIMITER $$

CREATEPROCEDURE insert_Stu(IN max_num INT(10))

BEGIN

 DECLARE i INTDEFAULT0;

 REPEAT

  SET i = i +1;

  INSERTINTO student (name, age, live)VALUES(rand_string(3), rand_num(), rand_string(6));

 UNTIL i = max_num

  ENDREPEAT;

 COMMIT;

END $$

DROPPROCEDUREIFEXISTS rand_string;

DELIMITER $$

CREATEFUNCTION rand_string(n INT)RETURNSVARCHAR(255)

BEGIN

 DECLARE chars_str VARCHAR(100)DEFAULT'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';

 DECLARE return_str VARCHAR(255)DEFAULT'';

 DECLARE i INTDEFAULT0;

 WHILE i < n DO

 SET return_str = CONCAT(return_str, SUBSTRING(chars_str, FLOOR(1+ RAND()*52),1));

 SET i = i +1;

 ENDWHILE;

 RETURN return_str;

END $$;

DROPPROCEDUREIFEXISTS rand_num;

DELIMITER $$

CREATEFUNCTION rand_num()

 RETURNSINT(5)

BEGIN

 DECLARE i INTDEFAULT0;

 SET i = FLOOR(100+ RAND()*10);

 RETURN i;

END $$

;

call insert_Stu(1000000);

2. SQL对比

  1. 常规分页

 select s.*from student s limit1000000,10;

  1. 优化分页

 select s.*

 from student s

 WHERE s.id>=(SELECT s.idFROM student LIMIT1000000,1)

 LIMIT10;

  1. 最优分页

 SELECT s.*FROM student s WHERE s.idBETWEEN1000000AND1000010;

性能对比图

 可以看到三种SQL的耗时 ,为什么会有这么大的差距,这主要是MySQL的limit关键字会导致偏移量的原因

9819800-ba030fd11e02abd3.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
SQL 监控 关系型数据库
MySQL性能调优:监控和优化
MySQL性能调优:监控和优化
102 1
|
7天前
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
|
7天前
|
存储 缓存 关系型数据库
【MySQL调优】如何进行MySQL调优?一篇文章就够了!
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
【MySQL调优】如何进行MySQL调优?一篇文章就够了!
|
3月前
|
SQL 算法 关系型数据库
【MySQL】专栏合集,从基础概念到调优
【MySQL】专栏合集,从基础概念到调优
30 0
|
1月前
|
关系型数据库 MySQL Java
面试官:说说MySQL调优?
面试官:说说MySQL调优?
62 5
面试官:说说MySQL调优?
|
1月前
|
SQL 关系型数据库 MySQL
Mysql原理与调优-事务与MVCC
【8月更文挑战第19天】
|
29天前
|
存储 SQL 关系型数据库
你真的会MySQL调优吗?
你真的会MySQL调优吗?
29 0
|
2月前
|
SQL 关系型数据库 MySQL
MySQL服务器性能调优的顶级策略14
【7月更文挑战第14天】MySQL服务器性能调优的顶级策略
47 12
|
2月前
|
SQL 关系型数据库 MySQL
mysql性能调优:EXPLAIN命令21
【7月更文挑战第21天】掌握SQL性能调优:深入解析EXPLAIN命令的神奇用法!
38 1
|
2月前
|
SQL 关系型数据库 MySQL
MySQL设计规约问题之为什么在使用LIMIT进行分页时要注意效率,并且LIMIT的值越大效率越低
MySQL设计规约问题之为什么在使用LIMIT进行分页时要注意效率,并且LIMIT的值越大效率越低

热门文章

最新文章