Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

Mysql索引优化案例 PDF 下载


分享到:
时间:2021-07-31 10:01来源:http://www.java1234.com 作者:转载  侵权举报
Mysql索引优化案例 PDF 下载
失效链接处理
Mysql索引优化案例 PDF 下载


本站整理下载:
提取码:ln9y 
 
 
相关截图:
 
主要内容:


常见sql深入优化
分页查询优化
1 示例表:
2 CREATE TABLE `employees` (
3  `id` int(11) NOT NULL AUTO_INCREMENT,
4  `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名',
5  `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄',
6  `position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位',
7  `hire_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入职时间',
8  PRIMARY KEY (`id`),
9  KEY `idx_name_age_position` (`name`,`age`,`position`) USING BTREE
10 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='员工记录表';
11
12 drop procedure if exists insert_emp;
13 delimiter ;;
14 create procedure insert_emp()       
15 begin
16   declare i int;                   
17   set i=1;                         
18   while(i<=100000)do                
19     insert into employees(name,age,position) values(CONCAT('zhuge',i),i,'dev'); 
20     set i=i+1;                      
21   end while;
22 end;;
23 delimiter ;
24 call insert_emp();
很多时候我们业务系统实现分页功能可能会用如下sql实现
1 mysql> select * from employees limit 10000,10;
表示从表  employees  中取出从 10001 行开始的 10 行记录。看似只查询了 10 条记录,实际这条 SQL 是先读取 10010
条记录,然后抛弃前 10000 条记录,然后读到后面 10 条想要的数据。因此要查询一张大表比较靠后的数据,执行效率
是非常低的。
>>常见的分页场景优化技巧:
1、根据自增且连续的主键排序的分页查询
首先来看一个根据自增且连续主键排序的分页查询的例子:
mysql> select * from employees limit 90000,5;
该 SQL 表示查询从第 90001开始的五行数据,没添加单独 order by,表示通过主键排序。我们再看表  employees  ,因
为主键是自增并且连续的,所以可以改写成按照主键去查询从第 90001开始的五行数据,如下:
mysql> select * from employees where id > 90000 limit 5;

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐