面试中的数据库基本知识(索引的分类)

思维导图

在这里插入图片描述

架构

在这里插入图片描述

索引

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息
目的:
(1)提高查询速度
(2)确保数据的唯一性
(3)可以加速表和表之间的连接,实现表和表之间的参照完整性
(4)使用分组和排序子句进行数据检索时,可以减少分组和排序的时间
(5)全文检索字段进行搜素优化
在这里插入图片描述

根据数据库功能索引分类(这里以Mysql为例)

一,主键索引(PRIMAY KEY)
主键:
  某一个属性组能唯一标识一条记录
  如:学生表(学号,姓名,班级,性别等等),学号时唯一标识的,可以作为主键
特点:

  • 最常见的索引类型
  • 确保数据记录的唯一性
  • 确定特定数据记录在数据库中的位置
    二、唯一索引(UNIQUE)
    作用:
    避免同一个表中某数据列中的值重复
    与主键索引的区别
  • 主键索引只能有一个
  • 唯一索引可有多个

三、常规/普通索引(INDEX)
作用:
快速定位特定数据
注意:
index 和 key 关键字都可以设置常规索引
应加在查询条件的字段
不易添加太多常规索引,影响数据的插入,删除和修改操作
四、全文索引(FULLTEXT)
作用:
快速定位特定数据
注意:
只能用于MyISAM类型的数据表
只能用于CHAR ,VARCHAR,TEXT数据列类型
使用大型数据集
五、组合索引
是在表中的多个字段组合上创建的索引
六、覆盖索引
通过索引就可以得到想要的结果
七、空间索引

基于数据结构的索引分类(索引的结构/实现方式):

B+树索引(Mysql默认使用B+树索引)

B树,B+树,及其在数据库中的应用
B+树为什么更适合用来做存储索引
(1)磁盘读写代价更低
(2)查询效率更加稳定
(3)更有利于对数据库的扫描

Hash(哈希索引)

缺点
数据结构:哈希表
(1)不能使用范围查询
(2)无法被用来避免数据的排序操作
(3)不能利用部分索引引键查询
(4)不能避免表扫描
(5)遇到大量Hash值相等的情况后性能大幅下降

BitMap(位图索引)(Oracle数据库支持)

位图索引
位图索引适合只有几个固定值的列,如性别、婚姻状况、行政区等等

R树索引

多叉树索引

基于索引的特点分类

1.密集索引与稀疏索引

秘籍索引文件中的每个搜索码值都对应一个索引值
稀疏索引文件只为索引码的某些值建立索引项
mysam存储引擎,不管是主键索引,唯一键索引还是普通索引都是稀疏索引
innodb存储引擎:有且只有一个密集索引。密集索引的选取规则如下:

  • 若主键被定义,则主键作为密集索引 如果没有主键被定义,
  • 该表的第一个唯一非空索引则作为密集索引
  • 若不满足以上条件,innodb内部会生成一个隐藏主键(密集索引)
  • 非主键索引存储相关键位和其对应的主键值,包含两次查找

2.单列索引,联合(组合)索引,全文索引

单列索引:一个索引只包含单个列,但一个表中可以有多个单列索引,单列索引包括普通索引,唯一索引,主键索引
组合索引:是在表中的多个字段组合上创建的索引

面试题

什么是索引?
索引其实是一种数据结构,能够帮助我们快速的检索数据库中的数据。
那么索引具体采用的哪种数据结构呢
常见的MySQL主要有两种结构:Hash索引和B+ Tree索引,我们使用的是InnoDB引擎,默认的是B+树
为什么采用B+ 树吗?这和Hash索引比较起来有什么优缺点吗?
因为Hash索引底层是哈希表,哈希表是一种以key-value存储数据的结构,所以多个数据在存储关系上是完全没有任何顺序关系的,所以,对于区间查询是无法直接通过索引查询的,就需要全表扫描。所以,哈希索引只适用于等值查询的场景。而B+ Tree是一种多路平衡查询树,所以他的节点是天然有序的(左子节点小于父节点、父节点小于右子节点),所以对于范围查询的时候不需要做全表扫描。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值