索引简介

索引是数据库中用于高效获取数据的数据结构,类似于排好序的快速查找表。它包括索引键值和指向数据记录的指针,通过B树等数据结构实现。索引能加速数据检索,降低IO成本,但会占用额外空间并可能影响数据更新速度。创建和维护索引需考虑数据量和更新频率,以平衡性能和存储需求。
摘要由CSDN通过智能技术生成

索引是什么

  • 官方定义:索引(Index)事帮助mysql高效获取数据的数据结构

  • 你可以简单理解为“排好序的快速查找数据结构”(排序+查找)

  • 详解,如下是一种可能的索引方式的示例:
    在这里插入图片描述
    为了加快col2的查找,右边的树节点包含的是索引键值和一个指向对应数据记录物理地址的指针。这棵树可以看到是排好序的,比当前节点大的数字在其右子树,小的在左子树,通过对树的节点查找快速找到右表中该值的位置。

  • 结论:数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,它以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这个数据结构这就是索引。

  • 一般来说,索引本身也很大,不可能全部存在内存中,因此往往以文件形式存在磁盘上。

  • 平时说的索引,一般都是指B树索引(不一定是二叉的)

  • 注意点:**索引是建立在表的数据上的。**这样会导致下面两个情况:

    1. 不要实际删除数据,如果删除数据,会导致按照索引查找的数据不会在原先的位置上。(采用逻辑删除)
    2. 频繁更新的字段不要建立索引,这样会导致之前建立的索引需要频繁更新。

优势

  • 提高数据检索的效率,降低数据库的IO成本。
  • 通过索引列多数据进行排序,降低对数据排序的成本,降低CPU的消耗。

劣势

  • 实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也是要占空间的。
  • 索引大大提高了查询速度,却会降低更新表的速度(insert、update、delete)。因为在更新表时,mysql不仅要保存数据,还要保存索引文件每次更新添加了索引列的字段,都会调整因更新带来的键值变化后的索引信息。
  • 索引只是提高效率的一个因素,如果你的mysql有大数据量的表,就需要花时间建立最优秀的索引,或优化查询。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TandK

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

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

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

打赏作者

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

抵扣说明:

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

余额充值