数据库 面试题(持续更新)

1. 索引分类

a. 普通索引:一个索引只能包含一个列,一个表中可以有多个普通索引

b. 唯一索引:索引列的值必须唯一,但润许有空值,且只允许有一个空值

c. 主键索引:一个表只能有一个主键索引,并且不能为空

d. 复合索引:一个索引可以包含多个列

2. B+树和B树的区别

a. B+树的非叶子节点只存储键值信息,而B树的非叶子节点还存储数据记录

b. B+树的数据记录存储在叶子节点,并且叶子节点之间都有一个链指针。而B树的数据记录存储在任意节点,在进行区间查询的时候,需要中序遍历,效率会更低

3. Mysql的索引结构

ps:在数据库中,B+树的高度一般为2~4层(减少磁盘IO,叶子节点之间有链指针)。并且Innodb存储引擎会将根节点常驻在内存中,这样在查找的时候最多就需要1~3次IO操作

Mysql的默认存储引擎Innodb就是用B+树实现索引结构的,B+树是对B树的一个优化。

        B树的每个节点都包含数据的key和data值。并且每一页的存储空间是有限的(16K),如果data较大,这样会导致每一页存储的节点较少,从而B树会更高,也就增加了IO次数,影响查询效率

        B+树所有数据记录都是按照键值的大小顺序存放在叶子节点的,而非叶子节点只存储键值信息,这样可以增加每页存储的节点数量,降低B+树的高度,从而减少IO

4. 聚集索引和非聚集索引

都是B+树的数据结构

a. 聚集索引的叶子节点存储实际的数据,非聚集索引的叶子节点存储指向数据行的指针

        从而聚集索引查询时直接就可以获取数据,而非聚集索引需要二次查询才能获取

b. 一个表只能由一个聚集索引,可以有多个非聚集索引,聚集索引的索引键决定了数据在表中的存储顺序

5. Innodb和MyISAM区别

a. 事务:Innodb支持事务而MyISAM不支持事务。也就是指Innodb可以保证数据库操作要么全部成功要么全部失败

b.锁机制:Innodb支持行级锁,而MyISAM不支持。

c. 外键支持方面:Innodb支持外键约束,而MyISAM不支持外键约束,无法建立表之间的练习

d. Innodb每个表只有一个idb文件,而 MyISAM有两个文件,MYD是属于文件,MYI是索引文件

6. 慢SQL优化方法

a. 避免全表查询,考虑在where和order by设计的列上设置索引

b. where子句中like关键字,避免使用%开头匹配,可能导致索引失效

c. 避免在where子句中使用or,使用or连接条件可能导致查询性能下降

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值