
Mysql实战
文章平均质量分 93
jzjie
我是一个你们可以随意拍砖的程序猿~喜欢原创文章的可以关注下
展开
-
MSQL系列(十四) Mysql实战-SQL语句 left join inner join On和Where语句的区别
left join外连接的时候, on 连接条件过滤 和 where 条件过滤 区别就很大了, on 条件是 被驱动表 不匹配的也要展示, 用NULL来填充。如果 上面的例子 你还是没区分出来 on 和 where的 区别, 我们再来一个更加直观的, 一眼就看出来区别。至此,我们已经彻底分清楚了 on语句和where语句的区别, 这对于我们能够正确的处理业务,十分重要。前面我们讲解了Join的底层驱动表 选择原理,也知道了基本的内连接外连接两种SQL查询表连接方式。下面我们来实战SQL演练一下。原创 2023-11-07 22:07:00 · 4318 阅读 · 4 评论 -
MSQL系列(十三) Mysql实战-left/right/inner join 使用详解及索引优化
前面我们讲解了B+Tree的索引结构,也详细讲解下Join的底层驱动表 选择原理,今天我们来了解一下为什么会出现内连接外连接,两种连接方式,另外实战一下内连接和几种最常用的join语法。这个就会带来一个问题, 比如我的驱动表有100条记录,但是我的外连接 我不想让驱动表全部数据加入到结果集, 但是外连接的本质就是不匹配的就展示到结果集,这种情况该如何处理?要按照错误的这个说法,下面的语句执行完 左边不动,还是4条,1,2,3,4 但是明显不是。根据查询结果,我们可以很明确的知道。原创 2023-11-03 23:43:05 · 4511 阅读 · 1 评论 -
MSQL系列(十二) Mysql实战-为什么索引要建立在被驱动表上
前面我们讲解了B+Tree的索引结构,也详细讲解下 left Join的底层驱动表 选择原理,那么今天我们来实战一下 left join,right join,inner join 等sql命令,看看到底如何用以及如何建立索引和索引优化。上面我们见识到了 如果没有任何条件,我们连接的2个表会形成笛卡尔积,数量膨胀很大,所以 我们在连接的时候一般都需要过滤条件,我们加一些条件,看下效果。但是被驱动表 要匹配记录,需要不停的去查询,匹配,被动表访问了很多很多次。查询结果笛卡尔积, 25条结果。原创 2023-10-30 23:03:27 · 850 阅读 · 0 评论 -
MSQL系列(十一) Mysql实战-Inner Join算法底层原理及驱动表选择
至此, 我们彻底的了解了 inner join算法驱动表的选择, 也了解了 mysql如何选择驱动表, 如何选择小表, 这对于我们后期SQL分析, 索引优化很重要, 因为我们要在 被驱动表上 添加索引,优化提升我们的查询效率。执行结果, 的确 查询了testD的列, 字段多, 占用 join_buffer 空间大, 就是大表, 所以驱动表就选择 小表 testC, 符合预期。我们知道 join 是where自己选择的驱动表, 选择小表 作为驱动表, 如何判断小表?我们再建一个表用来测试,该表字段较多。原创 2023-10-30 21:24:41 · 990 阅读 · 2 评论 -
MSQL系列(十) Mysql实战-Join驱动表和被驱动表如何区分
在join连接查询中,驱动表在SQL语句执行的过程中总是先被读取。而被驱动表在SQL语句执行的过程中总是后被读取。在读取驱动表数据后,放入到join_buffer后,再去读取被驱动表中的数据来和驱动表中的数据进行匹配。如果匹配成功,就返回结果,否则该丢弃, 继续匹配下一条为什么要小表驱动大表?原创 2023-10-28 21:19:35 · 3358 阅读 · 4 评论 -
MSQL系列(九) Mysql实战-Join算法底层原理
不再是每条每条的取,而是每次都从驱动表每次取一批数据,放到内存中,然后对这一批数据进行匹配操作,当数据操作匹配完毕,就再次从驱动表中取一批数据放到内存中,再次比较,直到数据匹配完毕,完成查询,这种方式就是。在Mysql的查询过程中,我们都知道涉及多表查询,我们都会使用join来连接多个表进行查询,join的本质就是循环每个表进行匹配,join算法可以分为三种形式。至此,我们彻底的了解了 join算法的底层原理,也明确直到了三种方法的优劣,有助于我们再分析索引的时候,更快的定位出问题,进行索引优化。原创 2023-10-26 00:00:38 · 820 阅读 · 0 评论 -
MSQL系列(八) Mysql实战-SQL存储引擎
详细讲解下Mysql的存储引擎MyISAM和InnoDB及三层索引树的底层逻辑原创 2023-10-25 00:07:26 · 633 阅读 · 0 评论 -
MSQL系列(七) Mysql实战-SQL语句Join,exists,in的区别
Mysql in exists用法的对比及底层原理原创 2023-10-23 23:40:41 · 1968 阅读 · 0 评论 -
MSQL系列(六) Mysql实战-SQL语句优化
SQL语句优化原创 2023-10-20 00:07:20 · 830 阅读 · 0 评论 -
MSQL系列(五) Mysql实战-索引最左侧匹配原则分析及实战
Mysql最左侧匹配详解及Explain的key_ken参数详解原创 2023-10-19 00:06:12 · 3326 阅读 · 0 评论 -
MSQL系列(四) Mysql实战-索引分析Explain命令详解
Explain如何进行SQL分析及SQL优化 Explain详解原创 2023-10-17 23:32:38 · 706 阅读 · 0 评论 -
MSQL系列(三) Mysql实战-索引最左侧匹配原则原理
前面我们讲解了索引的存储结构,我们知道了B+Tree的索引结构,索引的叶子节点是严格排序的,就像你看到的 底层叶子节点 15->18->20->30->49->50等等。了解了索引底层的存储结构,我们就能明白最左侧匹配原则的原理,这有利于我们在创建索引的时候,尽可能的优化索引,避免索引失效的场景。下面我们使用组合索引,来介绍以下 最左侧匹配原则 ,我们都知道索引的底层是一颗 B+ 树,那么联合索引呢?按照之前单节点的逻辑,只需要定位到左右子树,查找就行,我们来试一试, 查找第二个字母为 d的目标数据。原创 2023-05-25 23:27:26 · 2926 阅读 · 0 评论 -
MSQL系列(二) Mysql实战-索引结构B+Tree
对比上面的BTree和B+Tree,我们可以很清晰的看到, 56/56/77 这三个元素下面是没有data数据的,中间元素不保存数据,只用来做索引,所有的数据全都保存在叶子节点,B+Tree有以下特点。磁盘读取完本次需要的数据后,根据局部性原理,一个数据被使用,它的相邻数据可能马上也会被使用,程序需要的数据可能比较集中, 这样磁盘读取会按顺序再多读一部分数据到内存中,避免频繁的磁盘IO读取。B+Tree 叶子节点之间有双向指针,从左到右的索引值是从小到大的顺序排序,可以高效支持范围的查找。原创 2023-05-16 23:20:50 · 517 阅读 · 0 评论 -
MSQL系列(一) Mysql实战-索引结构 二叉树/平衡二叉树/红黑树/BTree/B+Tree
其实红黑树和上面的平衡二叉树类似, 红黑树是一种自平衡二叉搜索树。原创 2023-05-15 21:55:34 · 1016 阅读 · 0 评论