MySQL最新面试题(含答案)

本文详细探讨了MySQL中的索引概念、作用及其潜在负面影响,涵盖了索引的目的、类型和建立原则。同时,对比了主键、外键和唯一索引的区别,深入解析了MySQL的InnoDB和MyISAM引擎的差异。此外,文章还涉及事务处理、高并发系统设计、SQL优化策略以及存储过程的优缺点,最后讨论了数据库范式和反范式设计的选择问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

索引是什么?有什么作用以及缺点


定义:索引是存储引擎用于快速查找数据的一种数据结构。

MySQL数据库基本的索引类型:普通索引、唯一索引、主键索引和全文索引。

普通索引:允许被索引的数据列包含重复的列

唯一索引:不允许被索引的数据包含重复的列

主键索引:在一张表中只能定义一个主键索引,主键索引用于唯一标识一条记录(主键索引必然属于唯一索引),使用关键字PRIMARY KEY创建

索引的目的是什么

  • 快速访问数据表中的特定信息,提高检索速度
  • 创建唯一性索引,保证数据库表中每一行数据的唯一性
  • 加速表和表之间的连接
  • 使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序时间

索引对数据库系统的负面影响

  • 创建和维护索引需要耗费时间。这个时间随着数据量增加而增加
  • 索引需要占用额外的物理空间。
  • 对表进行增、删、改的时候需要动态维护,降低了数据的维护速度。

建立索引的原则

  • 频繁使用的字段
  • 选择性高的字段
  • 需要排序的字段

主键、外键和唯一索引的区别


主键:唯一标识一条记录,不能有重复,不允许为空。一个表只能有一个主键

外键:表的外键是另一个表的主键,外键可以有重复的,可以为空值(但是无意义,不推荐使用)。一个表可以有多个外键

唯一索引:用来提高查询排序的速度,没有重复值,但允许有一个空值。一个表可以有多个唯一索引。

MySQL底层实现,MySQL有什么引擎


MySQL底层采用B+树实现,B+树可以看作2-3树的一种扩展,B+树是每个节点允许存在多个元素,并且每个节点有多个孩子的多叉查找树,B+树的非叶子节点存储的是导航信息,不包含实际的值,而叶子节点存储了实际的值,所有的叶子节点和相邻的节点采用链表连接,便于区间查找和遍历。

关于叶子节点存储的值,在InnoDB中非主键索引中,存储的是主键的信息,而聚簇索引(主键索引)中存储的是实际数据。而在MyISAM中叶子节点存储的是指向实际数据存储位置的指针。MySQL在5.5版本采用的是MyISAM作为默认的数据库引擎,之后就被更优秀的InnoDB引擎替代。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值