免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 922 | 回复: 0
打印 上一主题 下一主题

Choosing Optimal Data Types [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:42 |只看该作者 |倒序浏览
MySQL支持多种数据类型,选择正确的类型是获得高性能的关键。

  • Smaller is usually better

          选择能保证应用正确的最小数据类型。

          不要过分的低估所要存储的数据的长度,因为在应用运行之后在表的多个地方增加数据类型的长度(data type range)是非常痛苦的事情。

  • Simple is good

          尽可能选择简单的数据类型,这样更节省CPU。

          如整数(interger)就比字符(character)要简单。

          两个简单的例子:存储日期时,使用MySQL内置的DATETIME类型比用字符串类型要好;用整形存储IP信息比用字符串好。

  • Aviod NULL if possible

          尽可能避免在数据库中存放NULL

          尽可能在对所有字段都做NOT NULL约束,除非是真的打算存储NULL

          对MySQL来说,很难优化可以为NULL的列——构造索引、索引统计和数据比较的时候更加复杂——存储的时候需要额外的空间并需要MySQL对其做特殊的处理。例如,在MyISAM引擎的表中,对可以为NULL的列加索引,每一项都需要额外的存储空间,并且使得索引变成变长索引——定长索引用整形存储,效率更高。

          如果实在需要有NULL的存在,也可以考虑用“0”戒者空字符串来代替。

          但是,把NULL-ABLE的列转换为NOT NULL所带来的性能提升也是有限的。所以,对于已经运营的应用,并不强制化大代价去做这样的优化。只是,如果是从头开始设计表的Schema,推荐使用这样的优化设计。

MySQL首先把数据分成了若干大类,如时间类型、数值类型和字符类型等。然后又在这些大类中细分了若干子类,如时间类型又分类DATETIMETIMESTAMP

列数据类型的选择步骤是,首先确定使用哪一种大类,然后再选择合适的子类。

不同子类适用于不同的引用类型。如同样是时间类型,DATETIME适用于做展示,而TIMESTAMP更适合做应用的内部逻辑。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP