数据库索引的理解

一般在表查询时,如果没有建立索引,当查询一个字段符合条件的记录时,数据库会默认扫描整张表,如果表的条目很多,如千万条的级别,那么就会严重影响输出结果的速度。
数据库怎么解决查询速度慢的问题呢---------索引

什么是索引

一个索引使用表中一个特定列的值建立的数据结构(最常见的是B-Tree)。
索引包含一个表中列的值,并且这些值存储在一个数据结构中。
存储引擎决定这索引使用的数据类型,常见的MyISAM存储引擎和InnoDB存储引擎都是用B+Tree实现索引的。
存储引擎是表级别的,每张表都可以设置单独的存储引擎。


索引的类型

索引分单列索引和组合索引。
单列索引,即一个索引只包含单个列,一个表可以有多个单列索引。
组合索引,即一个索引包含多个列。

索引分也可以分为主索引和辅助索引。


索引的缺点

索引也会有它的缺点:
虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

建立索引会建立索引文件,占用磁盘空间。


MyISAM存储引擎

MyISAM主索引:
M
MyISAM辅助索引:
在这里插入图片描述


InnoDB存储引擎

innoDB主索引:
在这里插入图片描述
innoDB辅助索引:
在这里插入图片描述


MyISAM存储引擎和InnoDB存储引擎的索引区别

1,MyISAM存储引擎和InnoDB存储引擎都是用B+Tree实现索引的,但是MyISAM是非聚集索引,InnoDB是聚集索引。
2,MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。而在InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。
3,因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有),如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。
4,InnoDB的辅助索引data域存储相应记录主键的值而不是地址。换句话说,InnoDB的所有辅助索引都引用主键作为data域。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值