mysql内连接特点_MySQL面试题:内连接和外连接具体解释一下-开课吧

ac2d94bdc2974a374cb0a2373ca03e68.pngMySQL面试题

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

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中索引即数据,数据即索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值