我執行嵌套的SELECT來創建派生表,hourly
,它使我得到一個功能的可用性的小時平均值。使用hourly
,我平均所有這些值以獲得日平均值,並且我想創建日均平均值的索引視圖。我的查詢如下:無法創建索引視圖,因爲我引用派生表
CREATE VIEW DailyView WITH SCHEMABINDING AS
SELECT hourly.Feature,
AVG(hourly.AvgAvailability) AS AvgAvailability,
CAST(hourly.DateTime AS date) AS Date FROM
(SELECT DISTINCT
SC.Feature,
AVG(SA.Availability) AS AvgAvailability,
SA.DateAndHour AS DateTime
FROM dbo.ServiceAvailability AS SA LEFT OUTER JOIN
dbo.ServiceCatalog AS SC ON SA.ServiceID = SC.ServiceID
GROUP BY SC.Feature, SA.DateAndHour) hourly
GROUP BY hourly.Feature, CAST(hourly.DateTime AS date)
GO
CREATE UNIQUE CLUSTERED INDEX IDX_V1 ON DailyView(Date)
GO
但是,我不能創建一個索引視圖這種方式,因爲我得到以下錯誤:
Cannot create index on view "Reporting.dbo.DailyView" because it references derived table "hourly" (defined by SELECT statement in FROM clause). Consider removing the reference to the derived table or not indexing the view.
這對我來說是很重要的指標這一觀點,因爲我們將處理大量的數據,但我不知道如何在沒有派生表的情況下獲得嵌套平均值。
您可以創建視圖*而不需要子查詢,並創建一個聚集索引,然後在需要時加入該子查詢? – 2014-12-02 21:50:19
在創建索引視圖之前,您是否嘗試過各種性能調整方法,例如索引,將CAST(hourly.DateTime AS date)'轉換爲包含索引等的計算列。 – 2014-12-02 21:55:16
這兩個好的建議。我會研究這些。 – wemblem 2014-12-02 22:07:31