MySQL中的索引

索引概述

索引是存储引擎用于快速查找的一种帮助SQL高效获取数据的数据结构(类似于指针,如书本的目录一样,用于快速寻找对应的内容),避免了全表扫描:一条条数据查找,直到找到目标。

索引是在存储引擎中实现的,存储引擎可以定义每个表的最大索引数和最大索引长度,所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。

索引的最主要目的是为了减少磁盘I/O次数,提高查询效率。

 索引的不足


1. 创建索引和维护索引需要消耗时间,并且随数据的数量增加,消耗的时间也会增加;
2. 索引需要占用磁盘空间;
3. 虽然索引提高了查询速度,但同时会降低更新表的速率,当对表中数据进行增、删、改时索引也要动态维护,这样就降低了数据的维护速度。(在插入数据时,最好是先删除表中索引,插入完后再创建索引,以此来提高效率)


InnoDB索引


InnoDB支持的常见索引:
-  B+Tree索引
-  全文索引(5.6.4及以后版本)
-   hash索引 (容易发生hash碰撞,不能人为干涉,只能系统使用)

    
 MyISAM索引


MyIASM中常用的索引是**B+Tree索引**,并且都是 **非聚簇类型**的(索引和数据分开存储):
- 将表中的数据单独存储到一个文件夹中,称之为**数据文件**,在插入数据时没刻意按照主键大小排序,固不能在这些数据上使用二分法进行查找;
- MyISAM会单独为表的主键创建一个索引,把索引信息存放到另一个文件中(**索引文件**),用于索引的叶子节点只存放了 **主键+数据记录地址**,用于回表操作。

后续更新.....
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值