MySQL数据库之MySQL 之 表设计注意事项
小标 2018-09-12 来源 : 阅读 1658 评论 0

摘要:本文主要向大家介绍了MySQL数据库之MySQL 之 表设计注意事项 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

本文主要向大家介绍了MySQL数据库之MySQL 之 表设计注意事项 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

MySQL表设计好与坏直接关系到性能优化之根本,一般表的设计为了维护简单减少存储等因素都会遵循范式化的规则,为了查询效率我们一般都会有一些数据冗余,就会用到反范式化的设计,网上也有很多这方面的介绍,这里就不过多的解读了。

 


表字段类型直接关系数据的存储及查询效率,下面列举一些注意事情(引擎默认为innodb):

 

    1、选择合适的字段类型,例如一个status状态字段,一般而言只会存在0、1、2几个不同值,我们可以使用tinyint绝不使用int,int占用空间为tinyint的四倍。又比如性别字段以中文男女分别时可以定义为enum类型,对查询效率有提升

 

    2、字符类型选择合适的长度:

        char:定长字符类型,例如一个name字段设计为char(10),无论存储1个还是10个字符,在磁盘及内存中都会分配10个字符的空间做存储

        varchar:可变长字符类型,but只是对磁盘存储而言为可变长度,内存中依然按照设计时所给的字符长度分配空间

        假如一个字段不长且能固定长度的使用char比varchar效率更高。

 

    3时间类型字段选择: datetime占用6字节,timestamp占用4字节

 

    4、选择顺序增长并且长度不大的整型字段做主键,MySQL乃索引组织表,数据和主键索引存在于一个数据页上,并且辅助索引都存在主键值,主键长度小有利于减少磁盘存储空间提高扫描速度,B+tree索引都是按顺序存储,设计主键为增长类型可以有效的降低数据页分裂,提高扫描速度。

 

    5、保持每个字段不为null,采用默认值或者空字符代替,null在存储时为标识符,在做扫描时会对null进行计算增加开销。

 

    6、除去text、blob等长字符类型的字段数据一行数据最多只能有65535字节长度的数据

 

    7、一行数据长度加主键索引长度尽量不能超过8K,B-tree索引原则一页最少存储两条数据保持平衡,如果查过8K的长度,就会发生部分数据溢出的情况,降低查询效率。

 

    8、慎用长字符类型字段:

          compact:行格式为compact时长字符类型字段聚集索引页只存储前768字节数据,其余部分存于一个溢出页

          dynamic:行格式为该选项并且innodb_file_format=Barracuda时,当不合适存储全部数据于聚集索引页时,只存储20字节的指针,指向数据存放的溢出页

          不管是varchar的长类型或者是text、blob等的长字符类型,两个字段之间的溢出页不能共享,这样使得一个有多个长字符类型的表,在做字段查询时效率大大降低。    

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 2 不喜欢 | 1
看完这篇文章有何感觉?已经有3人表态,67%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程