数据库来一发(三)数据库索引

一、索引简介

索引是数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

数据库索引的基本结构是B+树,当然会有一些优化和变种,下面介绍Mysql两种主要的索引Innodb和MyISAM。

二、索引分类

1、InnoDB索引(聚簇索引)

InnoDB索引文件和数据文件是分离的,索引节点仅保存数据记录的地址,叶子节点保存完整数据记录。

因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键。InnoDB的辅助索引data域存储相应记录主键的值而不是地址。因此如果主索引过长,会使得副索引很大。

2、MyISAM索引(非聚簇索引)

MyISAM索引的索引文件保存数据地址,即索引和数据是在同一个节点里的。

主索引和副索引结构上没有区别,只不过主索引的key是唯一的。

3、两种索引区别

  • 范围查找,聚簇索引更快。
  • 插入效率,聚簇索引要考虑页分裂;而非聚蔟索引要考虑多索引更新。

三、索引创建原则

  • 索引会占空间,不是越多越好,且会影响insert、update效率。
  • 尽量选择数据值比较短的索引,因为字段越长,匹配的成本越高。
  • 尽量扩展索引为联合索引,而不是建多个索引。
  • 对于聚蔟索引,select语句不一定要select *,如果只select几个索引值,那么可以只走索引不查数据,效率会更高。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值