表的优化与列类型选择

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

表的优化:

1、定长与变长的分离

2、常用字段与不常用字段分离

3、在一对多,需要关联统计的字段上添加冗余字段

列类型选择:

1、字段类型优先级: 整型 > date, time > enum, char > varchar > blob, text

其列的特点分析:

整型:定长没有国家、地域之分,没有字符集的差异

比如:int 1,2,3,4,5 <-> char(1) a,b,c,d,e

从空间上都是占1个字节,但是 order by 排序,前者快;这是由于后者需要考虑字符集与校对集(就是排序规则)

date/time:直接选 int unsgined not null 存储时间戳

time:定长,运算快,节省空间,考虑时区写 sql 时不方便

enum:能起来约束值的目的,内部用整型来存储,但与 char 联查时,内部要经历串与值的转化

char:定长,考虑字符集和(排序)校对集

varchar:不定长,考虑字符集的转换与排序时的校对集,速度慢

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

2、够用就行,不要太慷慨:大的字段浪费内存,影响速度

3、尽量避免用 null():null 不利于索引,要用特殊的字节来标注

它在磁盘上占据空间其实更大(MySQL5.5之后进行优化,其大小区别已不明显了)

Eunm 列的说明:

①、内部是整型来存储的

②、enum 列与 enum 列相关联速度快

③、enum 列比 (var)char 的弱势,再碰到与 char/varchar 关联时要转化,花费时间

④、当 char 非常长时,enum 依然是固定长度,当查询数量越大时,enum 的优势越明显

⑤、enum 与 char/varchar 关联,由于转化,速度要比 enum -> enum、char -> char 要慢,但是当数据量特别大时,可以节省IO



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值