最佳实践MySQL数据类型列表

时间:2009-09-04 16:29:40

标签: sql mysql

是否有针对常见应用程序的最佳实践MySQL数据类型列表。例如,列表将包含id,ip地址,电子邮件,主题,摘要,描述内容,URL,日期(时间戳和人类可读),地理点,媒体高度,媒体宽度,媒体持续时间等的最佳数据类型和大小,等

谢谢!!!

3 个答案:

答案 0 :(得分:10)

我不知道,所以让我们开始吧!

数字ID / auto_increment主键:使用无符号整数。不要使用0作为值。并记住各种大小的最大值,即如果你不需要40亿个值,当mediumint提供的1600万个就足够时,不要使用int。

日期:除非您特别需要超出mysql的DATE和TIME类型支持范围的日期/时间,否则请使用它们!如果您改为使用unix时间戳,则必须将它们转换为使用内置的日期和时间函数。如果您的应用需要unix时间戳,您可以随时使用unix_timestamp()转换标准日期和时间数据类型。

IP地址使用inet_aton() and inet_ntoa(),因为它可以轻松地将IP地址压缩为4个字节,并且您可以使用索引进行范围搜索。

答案 1 :(得分:7)

整数显示宽度您可能会将此类整数定义为“INT(4)”,但却被(4)对存储的数字没有实际影响的事实所困惑。换句话说,你可以存储像999999这样的数字。原因是对于整数,(4)是显示宽度,并且只有与ZEROFILL修改器一起使用时才有效。此外,这仅用于显示目的,因此您可以将列定义为“INT(4)ZEROFILL”并存储99999.如果存储了999,则当您选择此列时,mysql REPL(控制台)将输出0999。 / p>

换句话说,如果你不需要ZEROFILL的东西,你可以不用显示宽度。

答案 2 :(得分:5)

资金:使用十进制数据类型。基于现实生产场景,我建议(19,8)。

编辑:我最初的建议是(19,4);然而,我最近遇到了一个生产问题,客户报告说他们绝对需要十进制的“比例”为“8”;因此“4”是不够的,导致不正当的税收计算。我现在推荐(19,8)基于真实场景。我很想听到需要更细粒度的故事。