1

パーティション分割されたビューを作成しようとしていますが、実行計画では、基になる両方のテーブルにまだアクセスしていることを示しています。

SQLフィドルはこちら

クエリが引き続き基になるテーブルの両方にアクセスし、それらを連結するのはなぜですか?

4

1 に答える 1

0

最も可能性の高い問題は、CHECK制約が条件と一致しないWHEREことです。

チェック制約は次の形式です。

(datepart(year,[StockDate])=(2016))

あなたのWHERE状態は次の形式です。

StockDate = '20160101'

完全な日付を使用するようにチェック制約を変更します (さらに、関数を使用する必要はありません -- DATEPART-- このような単純なフィルターには)。以下は2016年の表です。

[StockDate] >= '01/01/2016' AND [StockDate] <= '12/31/2016'

他のテーブルについても同じ手順を繰り返し、両方の述語の年をテーブルの年と一致するように変更します。

DATE問題のフィールドはデータ型であるため、上記の構文は時間コンポーネントを示していないことに注意してください。データ型が の場合DATETIME、範囲の終わりは次のように表現する必要があります。

'12/31/2016 23:59.59.997'

パーティション ビューの詳細については、パーティション ビューの使用に関する MSDN ページを参照してください。

于 2016-04-05T01:01:53.720 に答える