数据库(十.索引)

索引

索引是对查询性能优化最常用的手段,简单理解就是根据指定的字段重新组织排序结构,如果查询条件中有用到建立了索引的字段,将会得到性能的提升.

原理:

  1. 通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件.
  2. 这里用的是b+树结构,还有FULLTEXT,HASH.
  3. 如图,每次都能趋近更小的范围.
    在这里插入图片描述

注意事项:

  1. 不是任何时候创建索引都能提高查询效率的,以查询为主,修改表的操作很少时使用索引性价比才高.
  2. 每次新建索引都要重新构建一次索引,如果数据量大的话构建索引也要一定的开销.
  3. 如果数据库表的读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,主要是查询数据时创建索引可以指数倍的提高查询性能,修改表的效率会有一点降低.
  4. 在使用InnoDB存储引擎的时候,每建一个表,应该给一个主键,这个主键就是索引的一种,MySQL8默认的引擎就是InnoDB.
  5. 索引的复杂度和树的高度息息相关,尽量使用字段长度小的字段建立索引.

创建索引

  • 查看索引 show index from 表名

在这里插入图片描述

  • 创建索引: crete index 索引名 on 表名(表中的字段名(此字段长度))
    如果字段是字符串类型,需要指定长度
    如果字段不是字符串类型,可以不指定长度

在这里插入图片描述

测试索引

  • 开启检测 set profiling = 1;
  • 查看每一个sql执行的时间 show profiles;
    执行SQL前开启检测,然后可以查看执行用时,用来做对比.

我这里准备了一张1000条数据的表,用python循环插入就行了,一万条,十万条都行,我这就用1000条吧.
在这里插入图片描述

在没有建立索引的情况下直接查询最后一条数据.

在这里插入图片描述

创建了索引之后

在这里插入图片描述
这里看也就快了一倍左右,因为数据量较少,数据量越大差距也会越大,这样测试时间也会不稳定,但足以证明索引能够提高查询的效率了.

删除索引

  • 删除索引: drop index 索引名 on 表名;

在这里插入图片描述
总结性文章,比较浅显.
如有错误,还望指出

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值