mysql 索引

索引

索引基础

索引作用

用于快速查找。可以用书的书签进行理解。

索引类型

索引多种类型适用于不用的场景。

B-Tree索引

mysql中默认的存储引擎innodb使用的是B+Tree,但是创建索引时使用的是using BTree。 B+Tree同一层是按照顺序排序的,并且有向右的指针,适合排序、范围查找。 B+Tree分为聚簇索引和非聚簇索引。 聚簇索引是一种数据存放方式,主键和数据都存储在索引的叶子节点中。 聚簇索引只能有一个,如果有主键则使用主键索引为聚簇索引,如果没有,则选择唯一的非空的索引作为聚簇索引,如果再没有,则生成一个。 除了聚簇索引都是非聚簇索引, 非聚簇索引的叶节点存储索引列的值和主键值。所以查找记录需要先查到主键,再通过主键找到对应的记录。 当索引的列包含了要查询的列时,就形成了覆盖索引,覆盖索引是针对某一条查询而言的。覆盖索引不需要再按主键进行查询。

索引好与坏

索引的目的是增加查找速度,如果衡量一个索引是否是一个好的索引,需要看索引的列、索引列的顺序、和使用的查询语句有哪些。看一个索引好坏主要有三个方面

  • 查询语句是否使用到了索引列
  • 由于BTree索引结构,限制只能高效的使用最左前缀,不能跳过索引某一列,当索引一列使用范围匹配后
  • 索引是否可以一次将数据获取,最好是聚簇索引或覆盖索引 使用了索引列,能达到一星索引,

索引优缺点

索引优点
  • 索引大大减少了服务器需要扫描的数据量
  • 索引可以帮助服务器避免排序和临时表
  • 索引可以将随机I/O变为顺序I/O
索引缺点
  • 索引会增加额外的存储空间
  • 插入数据和修改数据时

转载于:https://my.oschina.net/u/1584569/blog/743873

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值