2012-01-04 13 views
1

SQL Server 2008 R2 Expressデータベースに大量のデータを格納するために、データを複数のデータベースに分割して、月ごとに新しい「パーティション」を作成します。分割ビュー:CHECK CONSTRAINTを使用

この投稿:http://msdn.microsoft.com/en-us/library/ms190019.aspxは、クエリオプティマイザが私のパーティション間で高速にデータを見つける手助けをする方法を示しています。

ただし、空のパーティションにのみ一致する日付間のビューでデータを照会すると、クエリプランにはすべてのパーティションが表示されます。私はなぜそれを理解することはできません。

私の見解は非常に簡単です:

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エディションではサポートされていません。

チェックMSDNのSQL Server Express FeaturesページのセクションのSQL Server ExpressでサポートされていないSQL Server機能を参照してください。

+0

つまり、私はうんざりです。 –

1

これは実際のパーティションではないためです。日付に基づいて各データベース表に索引を作成すると、索引がチェックされてすぐに0行が戻されます。本当にパーティション化されていた場合は、期待した動作が得られます。しかし、そうではないので、unionステートメントのすべてのテーブルをチェックして、空の結果セットを戻します。

クエリプランがscanではなく、seekである限り、seeksはかなり速いので、私はそれについて少し気にしません。しかし、scanによっては、大丈夫かもしれません(白黒のルールではありません)。

関連する問題