数据库索引 简洁通俗解释

大多数人对索引对理解 都只是为“索引可以增加查询速度”。但是深入思考还会出现如下问题:

  • 为什么要给表加主键。
  • 为什么增加索引之后,查询的速度变快。
  • 为什么索引会使插入,删除,更改速度变慢。
  • 什么情况下在两个字段下面设置索引

知道这些问题的答案有什么好处呢?如果开发的应用使用的数据库表中只有1万条数据,那么了解与不了解真的没有差别, 然而, 如果开发的应用有几百上千万甚至亿级别的数据,那么不深入了解索引的原理, 写出来程序就根本跑不动,就好比如果给货车装个轿车的引擎,这货车还能拉的动货吗?

为什么需要主键

实际上,没有加主键的表,在现实存储之中,才会像表一样,无序的存储在磁盘之中,像表一样一行一行的排列十分整齐。
但是当给表添加主键之后,原来的数据结构,就会根据 主键 自动转换为平衡树的数据结构。整个表变成了一个索引,就是所谓的“聚焦索引”。

比如执行:select * from table where id = 1256;
在这里插入图片描述
数据量巨大的时候,可以使数据查询达到指数级别的降低。但是这种形式也存在坏处,就是在读取快的同时,会导致增删慢。因为树的结构,在修改数据的同时,会改变平衡树的结构,导致每次对数据进行修改的同时,会对树的结构进行重新梳理。可想而知,此举必然会导致增删改的效率降低。

聚集索引和非聚集索引

非聚集索引和聚集索引的存储数据结构相同,平衡树各节点的值为索引字段的值。
如果给多个字段添加索引,那么就会出现如下多个独立的索引结构:
在这里插入图片描述
非聚集索引和聚集索引的区别在于, 通过聚集索引可以查到需要查找的数据, 而通过非聚集索引可以查到记录对应的主键值 , 再使用主键的值通过聚集索引查找到需要的数据。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值