我正在使用SQL Server(Azure)存储过程创建股票市场应用程序。我已经对以下问题进行了广泛的阅读,但我仍然未定,所以会很感激反馈:
Money
或Decimal(9, 2)
或Integer
(需要*
或/ 100
)的价格?
注意:显然澳大利亚股市使用整数来获得更好的性能当我将excel中的种子数据导入货币数据类型时,它错误地为小数点后的第三位创建了一个值但是有些人讨厌金钱数据类型更容易发展至少
我有一个BuyOrders
和一个SellOrders
表,匹配后会在Contracts
表格中创建一行。这些表可以规范化,这样Contracts
表只包含BuyOrderID
和SellOrderID
但在我看来,额外的安全性(即跟踪)是值得的重复写Contracts
表中的某些列(即StockSymbol
,MemberID
)可忽略不计的性能成本。
答案 0 :(得分:2)
首先,您必须从业务中获得精确度要求,但您必须考虑小数点后至少四位数。当您交易国际股票时,涉及疯狂的汇率。此外,当您开始计算投资组合的表现时,您将获得大量小数 那么你必须考虑最大可能的投资组合价值约10亿美元。您也不希望受到不可预测的通货膨胀的影响。
如果您的客户精确到4位数精度,那么您可以使用" MONEY "数据类型。那只有8个字节。
如果由于某种原因,他们想要更好的精度,你可以使用DECIMAL(p,s),这可能是13个字节,但如果数量很少,它将只使用5个字节。