比尔云BierYun--阿里云最新优惠活动
阿里云优惠码丨阿里云代金券

MySQL查询优化之索引

MySQL查询优化之索引

什么是索引

索引简单来说就类似字典,想想我们小时候在中华字典怎么查某个字。索引的作用就是快速找出在某个列中有一特定值的行。

例如:有一张user表,其中有200万条记录,记录着200万个人的信息。有一个Phone的字段记录每个人的电话号码,现在想要查询出电话号码为xxxx的人的信息。

如果没有索引,那么将从表中第一条记录一条条往下遍历,直到找到该条信息为止。

假如有了索引,那么会将该Phone字段,通过一定的方法进行存储,好让查询该字段上的信息时,能够快速找到对应的数据,而不必在遍历200万条数据。

索引的存储类型

MySQL索引的存储类型有:BTREE、HASH。

B-Tree

B-Tree索引是目前关系型数据库中查找数据最为常用和有效的索引,大多数存储引擎都支持这种索引。

InnoDB聚簇索引

聚簇索引保证关键字的值相近的元组存储的物理位置也相同(所以字符串类型不宜建立聚簇索引,特别是随机字符串,会使得系统进行大量的移动操作),且一个表只能有一个聚簇索引。

因为由存储引擎实现索引,所以,并不是所有的引擎都支持聚簇索引。

优点:

1、所有的MySql列类型(字段类型)都可以被索引,也就是可以给任意字段设置索引

2、大大加快数据的查询速度

缺点

1、创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加

2、索引也需要占空间,我们知道数据表中的数据也会有最大上线设置的,如果我们有大量的索引,索引文件可能会比数据文件更快达到上线值

3、当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度。

未经允许不得转载:阿里云代理商 » MySQL查询优化之索引
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

强烈推荐

高性能SSD云服务器ECS抗攻击,高可用云数据库RDS