2012-01-04 29 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,你也可能没问题(这不是黑白规则)。