2012-01-04 35 views
1

爲了在SQL Server 2008 R2 Express數據庫中存儲大量數據,我將數據拆分爲多個數據庫,爲每個月創建一個新的「分區」。分區視圖:使用CHECK CONSTRAINT

此文章:http://msdn.microsoft.com/en-us/library/ms190019.aspx展示瞭如何幫助查詢優化器更快地在我的分區中查找數據。

但是,當查詢我的View上的數據只能匹配一個空分區時,查詢計劃顯示它正在每個分區中搜索。我不明白爲什麼。

我的觀點很簡單:

SELECT A.Gohan, B.Goku 
FROM [Feb2011].[dbo].[A] 
LEFT OUTER JOIN [Feb2011].[dbo].[B] 
UNION ALL 
SELECT A.Gohan, B.Goku 
FROM [Mar2011].[dbo].[A] 
LEFT OUTER JOIN [Mar2011].[dbo].[B] 
UNION ALL 
... 

任何線索?

回答

1

SQL Server Express版本不支持分區視圖。

檢查SQL Server Express不支持的SQL Server功能 MSDN上的SQL Server Express Features頁面的一部分。

+0

換句話說,我擰了。 – 2012-01-04 19:49:29

1

這是因爲這些不是真正的分區。如果您基於日期在每個數據庫表上構建索引,則會檢查該索引並快速返回0行。如果它真的被分割,那麼你會得到你期望的行爲。但事實並非如此,因此它將檢查union語句中的每個表以帶回空結果集。

只要查詢計劃顯示seek而不是scan,我不會擔心一點,因爲seeks相當快。儘管如此,根據scan,你也可能沒問題(這不是黑白規則)。