Mysql:表结构优化

一、数据类型的选择

        简单规则:

             1、字符长度设置更小更好;

             2、类型越简单越好,越简单使用的CPU越少;比如存储时间字段采用varchar类型与datatime类型对比;

             3、尽量避免使用null;因为可为null的列使得索引、索引统计和值比较都更加复杂;

       实际细节:

              1、整型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT分别使用8,16,24,32,64位存储空

               2、字符与字符串类型:

                     (1)、char长度固定,最大长度255个字节,适合存储长度确定的数据,比如:手机号码;

                      (2)、varchar可变长度,最大可存储65535个字节,适合用在长度可变的属性,比如:名称;

                      (3)、text不设长度。

                3、日期类型:datetime和timestamp,其中timestamp采用的是int存储,计算操作比较方便;

                4、枚举类型:用来存储常量,在mysql在内部会将每个值在列表中的位置保存为整数,并且在表的.frm文件中保存“数            字-字符串”映射关系的查找表

二、主键的选择     

           代理主键:与业务无关

           自然主键:事务的唯一属性

          推荐使用代理主键,避免高耦合性

三、存储引擎的选择         
            功能                 MylSAM    MEMORY    InnoDB    Archive
            存储限制          256TB       RAM            64TB       None
            支持事务          No             No                Yes         No
            支持全文索引   Yes           No                 No          No
            支持树索引       Yes           Yes               Yes         No
            支持哈希索引    No           Yes               No          No
            支持数据缓存    No           N/A               Yes         No
            支持外键           No           No                Yes         No

 四、数据冗余

         在某些情况下,为了提高性能,我们必须在时间与空间进行取舍。在mysql中,Join仅仅只是为了取得某个小字段的值,而Join到的记录又大,会造成大量不必要的 IO,顾可以对关联较多的字段数据实现多表冗余。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值