Mysql索引面试题

1.聚簇索引和非聚簇索引的区别?
聚簇索引是在叶子节点中存的是索引和所有的数据
非聚簇索引在叶子节点中存的是索引和主键索引的ID

2.为什么非主键索引存的是主键值而不是数据?
时间换取空间,假如说数据库中的数据非常多的话,主键索引和非主键索引的叶子结点都存所有的数据的话会占用大量的空间
数据一致性的问题,假如非主键索引存的是数据的话,更改了主键索引中数据的值,那么也要更改非主键索引的值

3.为什么推荐整型自增主键?
在构建索引树的过程中,有一个比较大小的过程,整型自增主键比较时时间复杂度低,相比来说,使用字符串的比较时间复杂度相对较高
使用整型自增主键的时候主键是连续自增的,在索引树中插入的时候按顺序插入就行,而使用字符串作为索引的时候,
插入时候的数据的索引有可能不是连续的,这时候有可能要进行索引的重建,索引的维护成本高

4.innoDB怎么保证必有主键?
如果某个表没有设置主键的话,mysql会找一个unique列作为主键,如果unique的列不存在的话,就生成一个默认的主键,只不过这个主键在表中不显示

5.B TREE
度:节点的数据存储个数
叶节点具有相同的深度
节点中的数据可以从左到右递增排列
数据存在树的所有节点中

6 B+ TREE
数据只存在叶子结点中,非叶子节点只存key,可以增大度
所有叶子节点都有一个链指针
顺序访问指针,提高区间访问的性能(方便进行范围查询)

7.MySQL的索引为什么不用hash?
无法完成范围查询
无法进行模糊查询
不支持多列联合索引
因为哈希碰撞问题,索引效率低

当谈到MySQL索引面试题时,有几个常见的问题和概念,我会尽力回答。请记住,以下答案仅供参考。 1. 什么是索引索引是一种数据结构,用于提高数据库查询的速度。它可以让数据库系统更快地定位到所需数据,而不必扫描整个表。 2. MySQL中常见的索引类型有哪些? MySQL常见的索引类型包括主键索引(Primary Key Index)、唯一索引(Unique Index)、普通索引(Index)和全文索引(Full-Text Index)等。 3. 主键索引和唯一索引有何区别? 主键索引是用于唯一标识每一行数据的索引,它必须是唯一且非空的。而唯一索引允许数据列中的值有重复,但是索引列的值必须是唯一的。 4. 什么时候应该使用索引? 当查询的频率高、需要快速定位到特定数据行或避免全表扫描时,使用索引可以提高查询性能。然而,过多或不恰当的索引可能会降低性能。 5. 索引数据库性能的影响是什么? 索引可以加快查询速度,但同时会导致插入、更新和删除操作变慢,因为每次修改数据时都需要更新索引。过多的索引也会占用磁盘空间。 6. 如何优化索引性能? 可以通过以下方式进行索引性能优化: - 选择合适的索引类型; - 选择适当的索引列; - 避免过多或重复的索引; - 使用覆盖索引减少IO操作; - 定期维护索引,删除不必要的索引。 这些只是一些常见的MySQL索引面试题,希望能对你有所帮助。如果你有其他问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值