数据库索引

定义:索引是一种用于快速查询和检索数据的数据结构

优点:

1.加快数据检索速度

2.通过创建唯一性索引,保证数据库表中每一行数据的唯一性

缺点:

1.创建和维护索引也会耗费时间

2.索引需要占用磁盘空间

3.对数据进行增删改查的时候,索引也要动态的维护

适合加索引:

1.where中经常使用的字段

2.不经常更新的字段

3.数据量大的表

4.数据离散度大(性别,真假等不适合)

5.不参与计算的列(防止索引失效)

不走索引的情况:

1.like xxx

2.索引列参与了运算

3.索引列使用了函数

4.使用了or

5.复合索引a-b-c a可以,b不可以,c不可以;ab可以 ba可以 ac可以 ca可以 bc不可以 cb不可以;abc可以

6.不等于

7.is null或is not null

索引的实现原理

1.MyISAM

MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据的地址,并不直接存放数据值;

辅助索引和主索引结构上没有区别但是辅助索引的key可以重复

2.InnoDB

InnoDB也使用B+Tree作为索引结构,但是与MyISAM有一些区别:

  1. InnoDB的数据文件就是索引文件,MyISAM的数据和索引是分开的,InnoDB的B+Tree的叶子结点记录了表的完整数据。这种索引叫聚集索引,InnoDB的数据文件按照主键聚集,所以必须要有主键(MyISAM可以没有),如果没有显式地指定主键,系统会自动选择一个列作为主键(UNIQUE NOT NULL),如果也没有则会生成一个隐含字段作为主键,长度6字节,类型长整型。
  2. InnoDB的辅助索引记录的是主键的值而不是地址,所以辅助索引搜索需要检索两遍索引,先检索辅助索引,得到主键,再检索主键索引。
  • 为什么用B+Tree作为索引结构

B+Tree的非叶子节点不存数据,意味着他能够存储更多的引用指向更多的叶子,所以B+Tree的高度往往更低 一般2~4层,意味着查找到一个数据只需要进行2~4次IO即可,减少IO消耗的时间。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值