我在SQL Server上运行了一个大型SQL数据库。我必须对大量数据执行算术运算,并且我希望提高性能。我目前使用FLOAT数据类型存储金额,我一直在阅读数字数据类型,以查看是否有其他数据类型可以提高速度。
我读过this question,建议尽可能使用DECIMAL()。我实现了DECIMAL(18,6),因为我需要小数点后6位数。但是我注意到查询速度略有下降。
我可以使用更快的数据类型而不是浮点数吗?如何提高数据库中的算术性能?
答案 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)