我们试图通过减少隐式转换来加速我们的一些存储过程。其中一个我们正在试图找出这些问题是如何解决类似这样的几个索引视图:索引视图强制非最佳列类型
Time.UserID is INT
Time.TimeUnit is DECIMAL(9,2)
Time.BillingRate is MONEY
Select
UserID,
SUM(TimeUnit) as Hours,
SUM(TimeUnit*BillingRate) as BillableDollars
FROM
Time
GROUP BY
UserID
给我们列一个观点:
UserID(int, null)
Hours(decimal(38,2), null)
BillableDollars(decimal(38,6), null)
我们希望有Hours(decimal(9,2),null)
和BillableDollars(money,null)
。
CAST(SUM(TimeUnit*BillingRate) AS MONEY) as BillableDollars
返回:
,因为该视图的 选择列表中包含的合计结果的表达式不能创建 视图“x.dbo.vw_viewName”聚集索引“ix_indexName” 函数或分组列。考虑从选择列表中删除对 聚合函数或分组列的结果的表达式。
我们担心的SUM(CAST(TimeUnit*BillingRate AS MONEY)) as BillableDollars
效率什么是保存这些列类型的最佳方式还是有“最佳实践”?
你试过'SUM(CAST)'的表现吗?您是否还将'MONEY'与更实用的数据类型(例如'DECIMAL(9,2)')恕我直言对比? – 2012-03-15 22:36:37