一:表的优化与列类型的选择

2018-08-07  本文已影响5人  _sleeping

1.选择合适的数据类型

数据类型的选择,重点在于合适二字,如何确定选择的数据类型是否合适

列选择原则

   使用简单的数据类型,使用可以存下你的数据的最小的数据类型,Int要比varchar类型在mysql处理上简单。

    字段类型优先级:整形>date,time>enum(枚举),char>varchar>blob,text

    尽可能的使用not null定义字段

    尽量少用text类型,非用不可时最好考虑分表

列的特点分析

    整形:定长,没有字串集的差异,

     比如 tinyint,1,2,3,4 char(1) a,b,c,d,e

     从空间上,都是占1个字节,但order by 排序前者快

    原因:字符需要考虑字符集与校对集(就是排序规则)

    time 定长,运算快,节省空间

    enum能以到约束值的目的,内部用整形存储但是与char联查内部需要转换

    char 定长

    varchar 不定长

    text/blob 无法使用内存临时表(排序等操作只能在磁盘进行)

例如:使用int存储日期时间,利用FROM_UNIXTIME(),UNIX_TIMESTAMP()两个函数来进行转换。

使用bigint存储IP地址,利用INET_ATON(),INET_NTOA()来进行转换。

      insert into test(ip) values (inet_aton('192.168.0.100'))

      select inet_ntoa(ip) from test;

2.定长与变长分离

核心且常用的字段,宜设置为定长保存到一张表,

而varchar,text,blob,这种变长字段适合单独放扩展表,用主键与核心表关联起来。

3.常用字段和不常用字段要分离

结合具体业务,将不常用的查询频度较低的字段拆出来

4.在1对多,需要关联统计的字段添加冗余字段,以减少连表和子查询

上一篇下一篇

猜你喜欢

热点阅读