通俗易懂浅识索引(1)

1.什么是索引?

答:索引是帮助MySQL提高查询效率的数据结构,相当于在一本中华字典中,我们可以使用“目录”对指定字词进行定位查找。而这里的“目录”,就是我们数据库中的经常提到的术语“索引”。

2.为什么要用索引?

答:提高查询效率。试想一下,在有着庞大数据量(上万甚至十万以上级别)的数据表中,倘若没有索引,就相当于是在一本没有目录的中华字典中查询你要的字,那么你的做法就是:傻傻的、一页一页地去查询。(几千页啊!可得翻的心憔悴!)但是有了目录了,在中华字典中,我们就可以根据目录中的拼音、偏旁等特征进行快速查询,查询量显而易见地减少了很多。同理,数据库中的索引根据键值来定位查询。(这里后续会慢慢讲到)。

3.索引的分类

(1)主键索引

设定为主键后数据库会自动建立索引,innodb为聚簇索引。(这一点及其重要!是后续讲解B+树原理时的铺垫

eg:在实际数据库设计中,大多离不开字段id,并会设置其为主键,数据类型为int。此时我们插入数据时,假如顺序杂乱无章,如以顺序(5,2,1,3,6,4,....)插入,当我们存储后,再次查看表时,就会发现id自动排序了 。

插入数据时:

成功存储后:

可以看到,MySQL自动将id按照升序进行排列了。为什么要这样呢?这就是之后详解B+树原理的铺垫了。                                              

(2)单值索引

即一个索引只对应一个列,一个表中可以有多个索引。

(3)唯一索引

索引列的值必须唯一,但允许有空值。像主键索引就是一种特殊的唯一索引。

(4)复合索引

即一个索引包含多个列,与单值索引相对。

4.索引的缺点

我们都说,凡事都有利弊。对于索引,也毫不例外。计算机中的各类优化算法啥的,本质上就是时间和空间的转换。同样以中华字典为例,设置的目录是需要消耗纸张的,同时我们也需要花费时间访问目录,再者目录能够设定的前提是要有一个查找依据(即底层原理),例如偏旁、拼音,那就意味着字典中需要将偏旁相近、拼音相近的字凑在一起。换句话说,一旦字典出了新版,插入或删除了新的字,那可得花费一段时间在改目录上。

以上了解后,我们对索引缺点的总结如下:

(1)维护索引需要耗费数据库资源

(2)索引需要占用磁盘空间(字典的纸张)

(3)当对表的数据进行增删改查的时候,因为要维护索引,速度会受到影响。(改目录)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜗牛变涡流

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值