代码之家  ›  专栏  ›  技术社区  ›  Martin Bobak

小数点的长度有区别吗?

sql
  •  0
  • Martin Bobak  · 技术社区  · 8 年前

    我有一个列的十进制长度为11个总位数(0.4335687532,-0.4216776567),但是,我在sql中创建了decimal(18,15)数据类型,它最终添加了5个 0 小数点后是s。我这样做的原因是因为新的数据可能有更多的数字,但没有迹象表明它会。我想知道添加这些小数是否会最终影响任何性能或其他我可能遗漏的东西。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Gordon Linoff    8 年前

    这个 精度 确定十进制值的长度,而不是 规模 . 所以, decimal(18, 5) decimal(18, 15) 通常在数据页上占用相同的字节数。

    毫无疑问,增加的数量取决于您使用的数据库——每个数据库都可以以自己的格式存储小数。但通常情况下,格式会使用每两个小数位一个字节,可能会使用另一个或两个字节的开销。因此,额外的5个零通常需要2-3个字节的存储空间。

    在确定数据库的行为时,这样的开销通常很小。毕竟,读写数据的单位是以数据页为单位的——而这些数据页通常是以千字节到兆字节为单位的。

    根据系统(硬件和软件)的不同,对稍长的数字运算可能需要稍长的时间。

    不过,总的来说,很难想象业绩会受到明显影响的情景。