专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

MySQL数据库设计之innodb如何设计主键索引_数据库

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 22:10:12       共计:3553 浏览
MySQL数据库设计之innodb如何设计主键索引?

MySQL数据库分为两种存储引擎MyISAM引擎与InnoDB。其中最主要区别在于InnoDB是聚集索引而MyISAM是非聚集索引。想要知道如何设计lnnoDB主键索引,我们则需要先理解其索引是如何实现才能进行合理有效的设计。

InnoDB索引实现

InnoDB使用B+Tree作为索引结构,数据文件本身就是索引文件。在InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。

上图是InnoDB主索引(同时也是数据文件)的示意图,可以看到叶节点包含了完整的数据记录如子叶数据文件就可以理解为索引文件,15为key主键,这种索引叫做聚集索引。因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有),如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。

其次,InnoDB的辅助索引data域存储的是主键的值而不是地址。既InnoDB的所有辅助索引都引用主键作为data域。例如,下图子叶中辅助索引Alice的data存的是主键的值

所以当使用辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录。

设计的思路

在InnoDB的索引实现后我们就可以根据其特性作出相应的设计了,如

不使用过长的字段作为主键,因为所有辅助索引都引用了主索引,过长的主索引会令辅助索引变得过大。不使用非唯一的字段作为主键在InnoDB,因为InnoDB数据文件本身是一颗B+Tree,非唯一主键会造成在插入新记录时数据文件为了维持B+Tree的特性而频繁的分裂调整,十分低效,使用自增字段作为主键则是一个不错的方式。

以上就是如何设计InnoDB主键索引的方式,思路是设计先要去理解其原理,在理解其原理之后根据其特性结合实际场景业务等即可以做出对应合理设计,希望我的回答对你有所帮助。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:如何用shell操作mysql的数据库_数据库 | ·下一条:mysql如何以根权限进入_数据库

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有