您现在的位置是: 首页> 学无止境> Mysql> Mysql

Mysql优化2:列类型选择

张伟江2021-05-11 14:15Mysql1408人已围观

列类型选择原则:

  • 字段类型优先级
  • 长度够用就行
  • 尽量避免使用null

1、字段类型优先级

  整型>date,time>enum,char>varchar>blog,text

列的特点分析:

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

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

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

原因:后者需要考虑字符集(CHARSET=utf8)和校对集(排序规则)(COLLATE=utf8_bin)

  time定长,运行快,节省空间。考虑时区,写sql时不方便 where>'2005-10-13';

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

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

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

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


2、长度够用就行,不要慷慨(smallint,varchar(N))

原因:大的字段浪费内存,影响速度

以年龄为例, tinyint unsigned not null,可以存储255岁,足够,用int占4个字节,多浪费了3个字节

以varchar(10),varchar(300)存储的内容相同,因为varchar是变长,不浪费,但是在表联查时,varchar(300)要花更多内存

 

3、尽量避免使用NULL

原因:NULL不利于索引,要用特殊的字节来标注

NULL在磁盘上占据的空间其实反而更大。(mysql 5.5已对null做了改进,大小区别已不明显,但查询仍是不便 is null、is not null)

点赞(0) 打赏

文章评论 共有 0 条评论

暂无评论

本栏推荐

猜你喜欢

站点信息

  • 建站时间:2018年10月24日
  • 网站程序:fastadmin
  • 文章统计301篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信号:zwj982215226

打赏本站

  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!
  • 微信扫码:你说多少就多少~
  • 支付宝扫码:你说多少就多少~

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部