『实战-MySql优化』
mysql的优化。
Mr. Sun_
欢迎小伙伴来到博客,共同学习,一同进步。
展开
-
十二、使用索引规则【完】
1.如果索引字段上使用了函数,导致索引失效explain select * from emp where upper(ename)='SMITH'2.如果索引字段上使用运算,导致索引失效explain select * from emp where empno+1=1093.如果索引字段上产生了(隐式类型转换),导致索引失效explain select * from emp where ename = 204.如果索引字段上进行了模糊查询,只支持前置条件模糊查询explain..原创 2020-09-27 14:38:03 · 207 阅读 · 0 评论 -
十一、explain属性介绍
EXPLAIN简介 EXPLAIN 命令是查看查询优化器如何决定执行查询的主要方法,使用EXPLAIN,只需要在查询中的SELECT关键字之前增加EXPLAIN这个词即可,MYSQL会在查询上设置一个标记,当执行查询时,这个标记会使其返回关于在执行计划中每一步的信息,而不是执行它,它会返回一行或多行信息,显示出执行计划中的每一部分和执行的次序,从而可以从分析结果中找到查询语句或是表结构的性能瓶颈。EXPLAIN能干嘛分析出表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被原创 2020-09-27 14:32:23 · 754 阅读 · 0 评论 -
十、Hash索引
哈希索引(hash index)基于哈希表实现,只有精确匹配索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码(hash code),哈希码是一个较小的值,并且不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。在 MySql中,只有 Memory 引擎显式支持哈希索引。这也是 Memory 引擎表的默认索引,Memory 引擎也支持 B-Tree 索引。值的一提的是,Memory 引擎是支持非唯一哈希索引的,.原创 2020-09-21 21:41:09 · 1500 阅读 · 0 评论 -
九、BTREE算法
BTREE算法1.【介绍】:是平衡二叉树算法升级版 是目前各种数据库在索引上所使用的主要算法2. 【特点】:使用区间数据来代替数据节点上具体的数据,降低维护难度 在连续的叶子节点之间使用指针来进行连接,降低了遍历的次数Rudolf Bayer 和 Ed McCreight 于1972年,在Boeing Research Labs 工作时bai发明了B 树,但是他们没有解du释B 代表什么意zhi义(如果有的话)。Douglas Comer 解释说dao: 两位作者从来都没解释过B树的原.原创 2020-09-19 12:47:42 · 547 阅读 · 0 评论 -
八、平衡二叉树算法
平衡二叉树算法1.是二分查找算法的升级版平衡二叉树(AVL树)在符合二叉查找树的条件下,它的任何节点的两个子树的高度最大差必须为1.下面的两张图片,左边时AVL树,它的任何节点两个子树的高度差<=1 ;右边的不是AVL树,其根节点的左子树高度为3,而右子树高度为12.【特点】:产生【数据节点】与【叶子节点】相关的概念 每一个【数据节点】只能由两个指针。一个指针指向小于当前【数据节点】的数据,另外一个指针指向大于当前【数据节点】的数据3.【缺点】:如果索引相关的字段中的数据发生原创 2020-09-18 07:04:00 · 604 阅读 · 0 评论 -
七、二分查找算法
二分查找法作为一种常见的查找方法,将原本是线性时间提升到了对数时间范围,大大缩短了搜索时间,但它有一个前提,就是必须在有序数据中进行查找。二分查找算法,将一组数据中平均值作为【根节点】,将小于【平均值】的数据放在【根节点】左边,将大于【平均值】的数据放在【根节点】右边,定位数据时,避免整体数据的扫描,只需要对一半的数据进行比较。如果数据量较大时,虽然可以节省将近一半的遍历数量,但是依然会消耗较多的时间。...原创 2020-09-17 07:10:50 · 729 阅读 · 0 评论 -
六、MySql索引分类
聚簇索引与非聚簇索引1.聚簇索引:只能来自于采用innodb存储引擎表的数据 mysql自动将采用了innodb存储引擎,作为表中主键建立索引,这个索引就是聚簇索引 如果当前表中没有主键,mysql将会选择一个添加唯一性约束的字段作为聚簇索引 如果当前表中既没有主键字段,也没有添加唯一性约束字段,mysql将随机选取一个字段来作为聚簇索引 在采用innodb存储引擎的表文件中,必然会存在一个聚簇索引 在采用innodb存储引擎的表文件中,只能有一个聚簇索引 在表文件中其他字段上建立的索引都是原创 2020-09-15 07:48:59 · 231 阅读 · 0 评论 -
五、MySql索引基本介绍
上篇文章介绍了查询命令中过慢的语句,总结原因如下:查询命令过慢的原因:在执行时需要对所有的数据来进行排序 在执行时需要对表中所有数据进行遍历 通过I/O流加载表文件次数索引介绍:【定义】:索引存在于对应的索引文件中,索引本质就是排好了顺序的一组数据【作用】:在索引数据中进行排序时,避免再次排序 在索引数据中对数据行进行定位时,可以避免全表扫面【索引文件位置】:如果当前的表依赖于innodb存储引擎,索引存在于FRM文件中 如果当前的表依赖于myisam存储引擎,所以.原创 2020-09-14 07:29:08 · 970 阅读 · 2 评论 -
四、MySql七个查询命令中哪些命令执行效率过慢
七个查询命令中哪些命令执行效率过慢:1.group by:(最慢) 【原因】:group by 在执行是首先要将临时表中的数据进行排序,然后再进行分组2.order by:【原因】:需要对select生成的临时表中数据行进行一次排序,然后要将排好顺序的数据行组成一个全新的临时表3.where:【原因】:需要对表中的所有的数据行进行遍历,如果当前临时表中的数据行过多的话,导致where执行的效率非常的慢4.limit:【原因】:如果指定的起始行数过大,会导致查询速度的过慢5.对于多.原创 2020-09-14 07:04:26 · 366 阅读 · 0 评论 -
三、MySql查询语句执行的特征
查询语句执行的特征七个查询命令中,除了having命令之外,剩下的六个查询命令在执行完毕都会生成全新的临时表; 七个查询命令中,除了from命令之外,剩下的六个查询命令操作的临时表都是上一个查询命令生成的临时表,不会对原表产生任何影响; 在当前查询命令执行完毕后,mysql会自动将上一个查询命令生成的临时表进行销毁处理,所以在一个查询语句执行完毕后,用户只能看到最后一个查询命令生成的临时表; 在进行多字段分组查询时,从第二个分组字段开始,操作的临时表是上一个分组字段生成的临时表。 ...原创 2020-09-14 06:55:33 · 263 阅读 · 0 评论 -
二、MySql优化七个查询命令特征
MySql查询语句中七个查询命令特征(根据七个查询执行优先级)一.FROM 【作用】:将硬盘上的表文件加载到内存中,生成一个全新的临时表 定位内存中已经存在的临时表 【注意】:在一个查询语句中,第一个执行的命令永远都是from from定位的是内存中的一个临时表,这个临时表必须手动指定表名二.WHERE【作用】:where命令操作的由from命令生成的临时表 where命令循环遍历当前临时表中的每一个数据行,将满足条件的数据行保存到一个全新的临时表【注意】:...原创 2020-09-11 07:34:48 · 468 阅读 · 0 评论 -
一、MySql优化的基础介绍
一.为什么要学习MySql优化1.避免网站页面出现访问错误2.增加数据库的稳定性3.优化用户的体验二.查询过慢的原因 1.有规律速度过慢:可能用户访问量激增 ,可以使用mysql集群处理; 2.无规律速度过慢:可能跟表中数据量的变化有关系,可以使用查询语句优化。三.判断查询语句是否需要优化依赖工具 1.慢查询记录 2.explain执行计划 3.相关日志文件 ...原创 2020-09-10 09:46:38 · 243 阅读 · 0 评论