是否有针对常见应用程序的最佳实践MySQL数据类型列表。例如,列表将包含id,ip地址,电子邮件,主题,摘要,描述内容,URL,日期(时间戳和人类可读),地理点,媒体高度,媒体宽度,媒体持续时间等的最佳数据类型和大小,等
谢谢!!!
答案 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)基于真实场景。我很想听到需要更细粒度的故事。