索引相关(二)

[align=center][size=large]索引相关[/size][/align]

一、InnoDB 与 MyISAM 对比

[table]
|存储引擎|InnoDB|MyISAM|
|存储结构|InnoDB表空间数据文件和它的日志文件;表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引|MyISAM表建立三个不同的文件;表定义、数据文件、索引文件|
|索引的数据结构|B+树|B+树|
|叶子节点的键值KEY|表的主键(一般主键INT无符号自增)|索引的相应字段的值|
|叶子节点的DATA域|保存完整的数据记录|数据记录的地址,即数据文件中的每行数据的地址|
|辅助索引|辅助索引data域存储相应记录主键的值而不是地址|与主索引在结构上无区别,主索引不可以重复,辅助索引可以|
|索引的类型|聚集索引|非聚集索引|
|全文索引、压缩索引|不支持|支持|
|主辅索引|IAnnoDB主键节点同时保存数据行,其他辅助索引保存的是主键索引的值|MyISAM顺序储存数据,索引叶子节点保存对应数据行地址,辅助索引很主键索引相差无几|
|数据存储|InnoDB键值一起保存,索引与数据一起载入InnoDB缓冲池|MyISAM键值分离,索引载入内存(key_buffer_size),数据缓存依赖操作系统|
|索引顺序|升序;优点:缩短索引键值的大小;缺点:不支持倒叙提取索引|不一定|
[/table]

博文参考:
[url=http://blog.csdn.net/zhuoxiong/article/details/10568129]由浅入深探究mysql索引结构原理、性能分析与优化[/url]


二、注意事项

1.InnoDB本身按照主键作为KEY形成的B+树结构,所以表必须有主键;无主键,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形

2.InnoDB不建议使用过长的字段作为主键,因为辅助索引在检索时是通过查找主索引来间接实现的;那么辅助索引的节点的data域中存放主索引的值,因为主索引很长,索引存储空间会加大

3.InnoDB主键单调,因为InnoDB的数据文件整体是一个B+树的结构,如果出现重复的数据,会不断的调整B+树的结构,增加维护成本及时间

4.InnoDB中辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录

博文参考:
[url=http://blog.codinglabs.org/articles/theory-of-mysql-index.html]MySQL索引背后的数据结构及算法原理[/url]

三、名词解释

[table]
|存储引擎|聚集索引|非聚集索引|
|定义|索引中键值的逻辑顺序决定了表中相应行的物理顺序;检索范围数据快速,数据已经按照顺序排序,而无需进行数据排序处理;|索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同|
|叶子节点|索引的叶节点就是数据节点;如InnoDB的B+树的索引结构中DATA中存放数据的完整记录|叶节点存放的是索引节点,有一个指针指向对应的数据块;如MyISAM的B+树的索引结构中DATA中存放指向数据表中记录的物理地址|
|数量|每个表中只能有一个|根据实际使用索引的情况而定|
[/table]

博文参考:
[url=http://www.cnblogs.com/aspnethot/articles/1504082.html]聚集索引和非聚集索引[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值