如果没有精确的背景,我确信这个问题是不完整的,所以我会尝试解释它,我会尽力清楚 我需要在页面上存储完整的数据,包括克数,毫克数,微克数和千焦耳。
所有这些数据都是99999.99g(相隔千焦耳),所以我可以使用DECIMAL(7,2)或DECIMAL(5,2)和较旧的MySql版本。
但是,我在mysql网站上看到,DECIMAL数据类型比MEDIUMINT(我错了?)更重,可能足以存储数据。
主要是,我将对小数点进行数值运算或者从用户机器中浮动,并且不需要再次存储它们,所以我怀疑在这种情况下什么是最好的数据类型。
那么这种情况下最好的数据类型是什么?
答案 0 :(得分:11)
数据库的一个目的是提供并确保数据完整性,并以格式存储数据,该格式接近于需要存储的数据类型的自然格式。考虑到这一点,您不应该过早地尝试优化数据库引擎的数据类型(除非您已经完成了基准测试,并且您有充分的理由)。相反,您可以更好地利用正确的关系设计表结构,并在适当的位置创建索引,以帮助数据库引擎处理您拥有的数据量和数据类型。如果数据正确标准化并且在适当的时候创建索引和关系,您会惊讶于数据库引擎可以处理多少数据。
因此,作为最佳实践,更喜欢使用DECIMAL类型存储十进制或小数,例如价格,小数等。
答案 1 :(得分:1)
尽可能精确地存储数据。您可以在选择它时将其截断。
当您需要精确度时,您可能会遗憾不会在一年后存储额外数据。
答案 2 :(得分:0)
我最了解它,DECIMAL是精确的fixed point arithmetic,这是一个相对深奥的数值计算分支。当你处理带有整数部分和小数部分的数字但是当不能允许浮点运算固有的错误时(例如会计),它会被使用。
所以我想如果你还不知道你需要使用DECIMAL,你可能不会。
答案 3 :(得分:0)
鉴于您需要准确性,请继续使用DECIMAL,并且不要使用float类型。如果您使用MEDIUM int,DECIMAL将执行您必须进行的转换。
请尝试阅读此内容以了解原因: http://docs.sun.com/source/806-3568/ncg_goldberg.html