搜索
写经验 领红包
 > 职场

mysql常见面试题内连接和外连接的区别(mysql中内连接和外连接的区别)

导语:MySQL常见面试题:内连接和外连接

说⼀下内连接和外连接

MySQL常见面试题

内连接也叫⾃然连接,只有两个表相匹配的⾏才能在结果集中出现。返回的结果集选取两个表中所匹配的数据,舍弃不匹配的数据 。

select fifieldlist from table1 [inner] join

table2 on table1.column = table2.column

内连接保证两个表中的所有⾏都满⾜条件,⽽外连接则不然,外连接不仅仅包含符合连接条件的⾏,⽽且还包括左表(左外连接),右表(右外连接),或者两个边表(全外连接)中的所有数据⾏

select fifieldlist from table1 left/ right outer

join table2 on table1.column =

table2.column

⽬前(8.0)MySQL不⽀持全外连接MySQL索引索引是⼀种数据结构,⽤于帮助我们在⼤量数据中快速定位到我们想要查找的数据。可以加快查的速度,但是会增加容量,降低增,删,改的速度。

1. MySQL有哪⼏种索引类型

各⾃特点常⻅的MySQL索引结构有B-树索引,B+树索引,Hash索引和全⽂索引。

B-Tree索引

因为存储引擎不⽤进⾏全表扫描来获取数据,直接从索引的根节点开始搜索,从⽽能加快访问数据的速度。

B-Tree对索引是顺序组织存储的,很适合查找范围数据。

适⽤于全键值、键值范围或者键前缀查找(根据最左前缀查找)

限制:对于联合索引来说,如果不是从最左列开始查找,则⽆法使⽤索引;不能跳过索引中的列

B+Tree索引

是B-Tree索引的变种,现在主流的存储引擎都不⽤单纯的B-Tree,⽽是其变种B+Tree或者T-Tree等等

和B-Tree最主要的区别就是B+Tree的内节点不存储data,只存储key,叶⼦节点不存储指针。

Hash索引

基于Hash表实现,只有Memory存储引擎显式⽀持哈希索引。

适合等值查询,如 = 、 in() 、 <=> ,不⽀持范围查询。

因为不是按照索引值顺序存储的,就不能像B+Tree索引⼀样利⽤索引完成排序。

Hash索引在查询等值时⾮常快。

因为Hash索引始终索引的所有列的全部内容,所以不⽀持部分索引列的匹配查找。

如果有⼤量重复键值得情况下,哈希索引的效率会很低,因为存在哈希碰撞问题。

程序员可以在B+Tree索引的基础上创建⾃适应Hash索引。

全⽂索引

MyISAM和InnoDB都⽀持全⽂索引

有三种模式:⾃然语⾔模式,布尔模式和查询扩展模式

R-Tree索引

MyISAM⽀持R-Tree索引,这个和全⽂索引基本不问。

2. B+树索引和hash索引的区别

B+树索引适合返回查找,⽽hash索引适合等值查询。

hash索引⽆法利⽤索引完成排序,但是B+树索引可以。

hash索引不⽀持多了联合索引的最左匹配规则,但是B+树索引⽀持。

如果有⼤量重复键值的情况下,因为存在hash碰撞,hash索引的效率会很低。

3. B树和B+树的区别

这个题其实偏向于数据结果了,这⾥不多讲,只说⼀下针对数据库来说,⾯试该怎么回答。派⽣问题:⼆叉树,⼆叉搜索树,B树,B+树。遇到坑爹的⾯试官可能让你写⼀个B+树...

⼆叉树

任何节点的左⼦节点的键值都⼩于当前节点的键值,右⼦节点的键值都⼤于当前节点的键值平衡⼆叉树/AVL树 当⼆叉树⾮常极端,变成⼀个链表后,它就没有了⼆叉树的相关优秀性质了。所以我们在insert节点的时候,需要不断的旋转,来使⼆叉树平衡,最终使得其查询效率最⾼。调整⼀共分为四种情况:LL,RR,LR,RL。

B-树

因为数据库中⼤部分数据都存在于磁盘,但是IO⼀次磁盘的代价相对来说⽐较⼤,我们需要尽可能的减少AVL树的深度,即增加每个节点的数据量,这便是B-树的由来。

每⼀个节点称为⻚,也就是⼀个磁盘块。 B树相对于平衡⼆叉树,每个节点存储了更多的键值(key)和数据(data),并且每个节点拥有更多的⼦节点

B+树

是B-树的变形,相对于B-树来说,B+树最主要的不同之处就是其⾮叶⼦节点上是不存储数据的,数据全在叶⼦节点存储。这就意味着B+树⽐B-树更胖。

因为B+树索引的所有数据均存储在叶⼦节点,⽽且数据是按照顺序排列的。那么B+树使得范围查找,排序查找,分组查找以及去重查找变得异常简单。⽽B树因为数据分散在各个节点,要实现这⼀点是很不容易的。

4. InnoDB为什么要使⽤B+树作为索引

这时说出B+树索引的优点即可,同时也可能会引出Hash索引和全⽂索引,InnoDB中索引即数据,数据即索引。

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请与我联系,一经查实立刻删除内容。本文内容由快快网络小苹创作整理编辑!