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 范围问题,或者说条件 ...
随机推荐
- 只需2分钟!PC端的报表即可转换成手机报表
转: 只需2分钟!PC端的报表即可转换成手机报表 手机制作报表,这个大家不知有没有尝试过,虽然我们平时都用电脑做,但是电脑要是不在身边了,手机就可以用来应应急.但其实小编并没有在手机上制作报表的实践经 ...
- .net Core 上传文件详解
.net core 和.net framework上传文件有很多需要注意的地方 .net framework 上传文件用httppostedfilebase .net core 上传文件用 IForm ...
- 手工实现一个ThreadPoolExecutor
以下代码的实现逻辑出自于公众号 码农翻身 <你管这破玩意叫线程池?> - PS:刘欣老师在我心中是软件技术行业的大刘. 线程池接口 public interface Executor { ...
- Java 面向对象 05
面向对象·五级 package关键字的概述及作用 * A:为什么要有包 * 将字节码(.class)进行分类存放 * 包其实就是文件夹 * B:包的概述 举例: ...
- 在C++中实现aligned_malloc
malloc的默认行为 大家都知道C++中可以直接调用malloc请求内存被返回分配成功的内存指针,该指针指向的地址就是分配得到的内存的起始地址.比如下面的代码 int main() { void * ...
- BeetleX使用bootstrap5开发SPA应用
在早期版本BeetleX.WebFamily只提供了vuejs+element的集成,由于element只适合PC管理应用开发相对于移动应用适配则没这么方便.在新版本组件集成了bootstra ...
- T1215拯救公主
1 #include <cstdio> 2 #include <queue> 3 #include <set> 4 #include <cstring> ...
- 怎么理解onStart可见但不可交互
前言 今天朋友遇到一个面试题,分享给大家: onStart生命周期表示Activity可见,那为什么不能交互呢? 这个问题看似简单,但涉及到的面还是比较多的,比如Activity生命周期的理解,进程的 ...
- 050_Servlet详解
目录 Servlet Servlet简介 HelloServlet Servlet原理 servlet-mapping Servlet请求路径 ServletContext Servlet上下文 Se ...
- ch1_6_6求解门禁系统问题
import java.util.HashMap; import java.util.Scanner; public class ch1_6_6求解门禁系统问题 { public static voi ...
