MySQL数据类型

     MySQL的数据类型可以分为数值型字符串类型日期和时间类型。

一些主要的数据类型之间的比较:

char 与 varchar

  • char在读取时会删除了尾部的空格。
  • char是固定长度而varchar是变长,所以char效率会高一些,但是随着MySQL版本的不断升级,varcahr性能也在不断的提高,所以在现在很多项目中,varchar更多的被使用。
  • MyISAM存储引擎建议使用固定长度的数据列代替可变长度的数据列;
  • MEMORY存储引擎目前都使用固定长度的数据行存储,因此无论使用CHAR或VARCHAR列都没有关系。两者都是作为CHAR类型处理。
  • InnoDB存储引擎建议使用varchar类型。对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度(所有的数据行都使用指向数据列值的头指针),因此在本质上,使用固定长度的char不一定比使用可变长度varchar列性能好。因而,主要的性能因素是数据行使用的存储总量。由于char平均占用的空间多有varchar,因此使用varchar来最小化需要处理的数据行的存储总量和磁盘I/O是比较好的。

text 与 blob

  • blob和text值会引起一些性能问题,特别是在执行了大量的删除操作时,删除操作会在数据表中留下很大的“空洞”,以后填入这些“空洞”的记录在插入的性能上会有影响,为了提高性能,建议定期使用OPTIMIZE TABLE功能对这类表进行碎片化整理,避免因为“空洞”导致性能问题。可以通过尝试构建一个表,然后插入大量的blob和text类型的数据,然后删除,查看.frm .MYD .MYI文件的大小,然后通过OPTIMIZE TABLE优化后再查看.frm .MYD .MYI文件的大小,观察这中间的变化。
  • 合成索引来提高大文本字段(blob或text)的查询性能。
  • 在不必要的时候避免检索大型的blob或text值。
  • 把blob或text列分离到单独的表中

浮点数 与 定点数
日期类型选择

根据实际需要选择能够满足应用的最小存储的日期类型。

记录年月日时分秒,并且记录的年份比较久远,那么最好使用DATETIME,而不要使用TIMESTAMP。因为TIMESTAMP表示的日期范围比DATETIME要短得多。

如果记录的日期需要让不同时区的用户使用,那么最好使用TIMESTAMP,因为日期类型只有它能够和实际的时区对应。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值