MySQL索引

索引是数据库中用于加速数据检索的数据结构,通过B树实现。它能提升查询速度,但也会影响增/改/删操作的效率。适合为频繁查询、外键、排序和分组字段建索引,而不适合频繁更新或数据分布均匀的字段。最左前缀原则在多列索引中很重要,确保有效利用索引。

什么是索引?

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。

索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。

更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。

索引有哪些优缺点?

索引的优点

    可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

    通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能

索引的缺点

    时间方面:创建索引和维护索引要耗费时间,具体地,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,会降低增/改/删的执行效率;

    空间方面:索引需要占物理空间。

数据库哪些情况下适合建索引,哪些情况下不适合建索引

一、哪些情况下适合建索引

1. 频繁作为where条件语句查询的字段

2. 关联字段需要建立索引,例如外键字段,student表中的classid,   classes表中的schoolid 等

3. 排序字段可以建立索引

4. 分组字段可以建立索引,因为分组的前提是排序

5. 统计字段可以建立索引,例如count(),max()

二、哪些情况下不适合建索引

1.频繁更新的字段不适合建立索引

2.where条件中用不到的字段不适合建立索引

3.表数据可以确定比较少的不需要建索引

4.数据重复且发布比较均匀的的字段不适合建索引(唯一性太差的字段不适合建立索引),例如性别,真假值

5. 参与列计算的列不适合建索引

最左前缀原则

  1. 多列索引:
  2. ALTER  TABLE people ADD INDEX lname_fname_age (lame, fname , age);
  3. 为了提高搜索效率,我们需要考虑运用多列索引,由于索引文件以B - Tree格式保存,所以我们不用扫描任何记录,即可得到最终结果。
  4. 注:在mysql中执行查询时,只能使用一个索引,如果我们在1name, fname , age上分别建索引,执行查询时,只能使用一个索引,mysql会选择一个最严格(获得结果集记录数最少)的索引。
  5. 最左前缀原则:顾名思义,就是最左优先,上例中我们创建了lname_fname_age多列索引,相当于创建了(lname)单列索引,(lname ,fname)组合索引以及( lname ,fname , age)组合索引。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值