算术运算的最有效数据类型

时间:2017-01-13 18:17:22

标签: sql-server decimal query-optimization sqldatatypes

我在SQL Server上运行了一个大型SQL数据库。我必须对大量数据执行算术运算,并且我希望提高性能。我目前使用FLOAT数据类型存储金额,我一直在阅读数字数据类型,以查看是否有其他数据类型可以提高速度。

我读过this question,建议尽可能使用DECIMAL()。我实现了DECIMAL(18,6),因为我需要小数点后6位数。但是我注意到查询速度略有下降。

我可以使用更快的数据类型而不是浮点数吗?如何提高数据库中的算术性能?

1 个答案:

答案 0 :(得分:0)

如果您可以使用较小的数据类型(例如decimal(9,6)),您可能会看到如您所述的大量数据的速度提升。

根据您正在进行的操作类型,结果的数据类型的大小可能会增加。

如果要乘以两个decimal(18,6)(9个字节),则生成的数据类型将为decimal(37,16)(17个字节)。

如果要乘以两个decimal(9,6)(5个字节),结果数据类型将为decimal(19,12)(9个字节)。

有关完整图表和说明,请参阅MSDN上的这篇文章:Precision, Scale, and Length (Transact-SQL)

Operations and resulting precision and scale