Money vs. Decimal vs. Float Performance问题(货币值的SQL数据类型)?

时间:2012-09-27 08:29:02

标签: c# sql-server

SQL Server中的Currency值列应选择什么数据类型。我已经在网上阅读了一些内容在客户实施方面,我们发现了一些有关货币数据类型的有趣性能数据。例如,当Analysis Services设置为货币数据类型(来自double)以匹配SQL Server货币数据类型时,处理速度(行/秒)提高了13%。是真的吗?

1 个答案:

答案 0 :(得分:5)

  

SQL Server中的Currency值列应选择什么数据类型。

我总是选择decimal,除非有充分的理由不这样做。 float是不合适的,因为并非所有十进制值都可以准确表示,并且您最终会得到奇怪的工件(例如,您将获得48.15000000000000000135的数量。)

money通常不合适,因为它具有固定的精度和比例,可能与您的实际要求不符。并且它对每个中间结果以及最终结果应用舍入,这可能不适合于复杂计算。通过decimal计算,您可以更好地控制何时进行舍入(通过转换为精度较小的decimal)。