MySQL数据库高级二:索引优化
索引优化非常的重要
1、预热


java开发
DBA培训很少,需要经验磨练
索引优化的效果非常好
左外连接


MySQL没有全连接
7种join一定要会写
具体见武林的例子

union的字段顺序要相同
6、

union all不会去重但效率更高
字段顺序一致!!!
7、



写法1

子查询很重要
写法2

写法3

写法4

作业再议P341
2、索引简介


索引结构
二叉树缺点:最坏情况是链表
balance tree :b树
平衡二叉树
B树和B+树

红色的是指向数据的指针

B+树

MySQL用的是B+树


B+tree的IO次数比Btree的IO少1/3


索引



group by更耗性能

Explain





先执行大的在执行小的

先从大到小再从上到下

在外层是主要查询,内层是衍生查询

key_len越长越好

主从复制简介
主机写到日志中,从机读取进行模仿
避免主从复制不同


操作不说了,是sql编程
创建函数
面试别提存储过程,节外生枝

优化效果明显 0.1—>0
int 型最多5
varchar几十
key_len

1、单表索引:全值匹配我最爱,where筛选字段有多少索引用多少

索引的顺序不影响:优化器会自动调整顺序

索引层层匹配
索引分层,一层然后又一层
先命中一层然后到与之相关的下一层

一一命中,第一层的每个叶子点都是一棵树
2、
按照顺序命中


俩个速度都是全表扫描很慢

创建索引

上面的用上了索引,下面没有
3、
4、

右边的字段失效

范围查询字段,建立索引的时候放在前面后面的字段失效

5、


留个文件表示介绍效率低,职场上要学会说话
6、

7、

按照首字母建立的树,如果首字母不确定无法建立索引树,最好首字母确定
8、


类型转换会使类型失效
类型一定要匹配
一般性建议
过滤性好的字段,就是定位范围小的
关联查询优化

俩个表的关联查询。第一个表叫驱动表,另一个表叫被驱动表,驱动表建立索引没有意义



4个语句的执行效率
第二

这个才是最快的、第一

5.7自动进行了优化

第4点是因为虚拟表没有办法建立索引,因此子查询最好不要放在被驱动表上
最好不要用子查询

3和4的区别,3是把子查询的虚拟表作为驱动表, 被驱动表给了实体表因此有索引优化

练习题
需求拆开来写
选取非掌门人的成员

索引失效需要优化,子查询优化

排序分组优化
order by就看extra
没有过滤条件索引不可使用



order by和where的内容都要有索引,索引顺序不能变


索引优化排序

单路排序更加的快因为是在内存进行排序

覆盖索引尽量少的使用select*,多用具体的字段名

8个sql的作业
straight_join来进行优化
MySQL数据库高级二:索引优化的更多相关文章
- mysql 高级和 索引优化,目的:查的好,查的快,性能好
		
1-事物隔离级别: 更新丢失, 并发情况下,对同一字段进行更新,就会出现更新丢失,采用乐观锁,比较版本号或时间戳可解决 读未提交 解决了更新丢失但是会引起脏读, 二个session.sessionA中 ...
 - mysql数据库架构设计与优化
		
mysql数据库架构设计与优化 2019-04-23 20:51:20 无畏D尘埃 阅读数 179 收藏 更多 分类专栏: MySQL 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA ...
 - MySQL数据库基础知识及优化
		
MySQL数据库基础知识及优化必会的知识点,你掌握了多少? 推荐阅读: 这些必会的计算机网络知识点你都掌握了吗 关于数据库事务和锁的必会知识点,你掌握了多少? 关于数据库索引,必须掌握的知识点 目录 ...
 - MySQL 数据库高级操作  (配图)
		
MySQL数据库高级操作 1.一键部署mysql 数据库 2.数据表高级操作 3.数据库用户管理 4.数据库用户授权 1.首先一键部署mysql 数据库 : 可以看我之前的博客 https://www ...
 - MySQL数据库授权与索引
		
MySQL数据库授权与索引 目录 MySQL数据库授权与索引 一.数据库用户授权 1. 授予权限 2. 查看权限 3. 删除权限 4. 全部权限(all privileges) 二.MySQL索引 1 ...
 - mysql 数据库(二)数据库的基本操作
		
mysql 数据库(二)数据库的基本操作 用户管理,添加权限,创建,显示,使用数据库 1 显示数据库:show databases; 默认数据库: mysql - 用户权限相关数据 test - 用于 ...
 - Mysql数据库写入数据速度优化
		
Mysql数据库写入数据速度优化 1)innodb_flush_log_at_trx_commit 默认值为1:设置为0,可以提高写入速度. 值为0:提升写入速度,但是安全方面较差,mysql服务器 ...
 - 【MySQL 高级】索引优化分析
		
MySQL高级 索引优化分析 SQL 的效率问题 出现性能下降,SQL 执行慢,执行时间长,等待时间长等情况,可能的原因有: 查询语句写的不好 索引失效 单值索引:在 user 表中给 name 属性 ...
 - MySQL数据库篇之索引原理与慢查询优化之二
		
接上篇 7️⃣ 正确使用索引 一.索引未命中 并不是说我们创建了索引就一定会加快查询速度,若想利用索引达到预想的提高查询速度的效果, 我们在添加索引时,必须遵循以下问题: #1 范围问题,或者说条件 ...
 
随机推荐
- 生态建设者为何青睐低风险、低成本的NGK算力?
			
自从BGV推向市场以来,生态建设者的目光都聚集于BGV这个去中心化金融的新星,其实NGK的其他项目也都在稳健进行当中. NGK在未来将推出"算力市场奖励计划",NGK将会对算力市场 ...
 - NGK Global首尔站:内存是未来获取数字财富的新模式
			
近日,NGK路演在NGK韩国社区的积极举办下顺利落下帷幕.此次路演在首尔举行,在活动当天,NGK的核心团队成员.行业专家.投资银行精英.生态产业代表和数百名NGK韩国社区粉丝一起参加NGK Globa ...
 - requests页面请求返回400:{"errors":{"username":"值必须是非空字符串。"}}
			
我的描述:我引入requests包,携带json类型数据请求(POST)一个网站,,访问提示<Response [400]> 解决方案: 1.首先使用postman请求一模一样的数据,发现 ...
 - 1095 Cars on Campus——PAT甲级真题
			
1095 Cars on Campus Zhejiang University has 6 campuses and a lot of gates. From each gate we can col ...
 - Example之selectOneByExample方法和selectByExample的使用
			
selectOneByExample示例如下: Example userExample = new Example(User.class);userExample.createCriteria().a ...
 - linux之安装nginx
			
nginx官网:http://nginx.org/en/download.html 1.安装nginx所需环境 a) PCRE pcre-devel 安装 # yum install -y pcre ...
 - Qstring和String的区别
			
QString qTest; std::string sTest = qTest.toStdString(); qTest = QString::fromStdString(sTest); //进入两 ...
 - 一个 java 文件的执行过程详解
			
平时我们都使用 idea.eclipse 等软件来编写代码,在编写完之后直接点击运行就可以启动程序了,那么这个过程是怎么样的? 总体过程 我们编写的 java 文件在由编译器编译后会生成对应的 cla ...
 - 【转载】Java泛型详解
			
[转载]http://www.importnew.com/24029.html 对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 本文参考 ...
 - c# float类型和double类型相乘出现精度丢失
			
c# float类型和double类型相乘出现精度丢失 double db = 4.0; double db2 = 1.3; float f = 1.3F; float f2 = 4.0F; Deci ...
 
			
		