MySql索引基本概念扫盲

索引定义

  • 官方定义:在关系型数据库中,索引是一种单独、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识的这些值的数据页的逻辑指针清单。
  • 个人白话理解:索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。如果没有索引的话,就必须一行一行的查到最后一行记录,即全表扫描。这种模式显然效率太慢。
  • 意义:索引的全部意义就是通过缩小一张表中需要查询的记录/行的数目来加快搜索的速度。
  • 索引是一种数据结构,Mysql常用的索引的数据结构是B+ Tree。

创建索引的原则

  • 在维度高的列创建索引。例如,年龄列的维度比性别列的高,性别列只有两三种,性别就不适合做索引。
  • 索引一般设置在条件列上,显示列通常少设置索引。即对where,on,group,by,order by中出现的列使用索引
  • 对于较小的数据列使用索引,这样可以使索引文件更小,同时内存中可以装载更多的索引键。例如有一个字段存文本内容,内容大,就不适合做索引。
  • 为较长的字符串使用前缀索引。算法对前几个字母对标数据的覆盖率,覆盖率超过百分之31的黄金值就可以使用前缀索引。

索引的缺点

  • 不能盲目的创建索引。只为那些查询操作频繁的列创建索引。创建索引会使查询操作变得更快,但是会降低增加、删除、更新操作的速度,因为执行这些操作的同时会对索引文件进行重新排序或更行。
  • 建议:百万或者千万级的数据库,大表加索引有一个比较好的方法:online-schemachange。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值