1

「パーティション」と呼ぶいくつかのデータベースに分割されたデータベースを使用しています。各パーティションは、特定の月の同じデータ構造を保持します。すべてのパーティションの上部にあるビューは、UNIONデータの取得に大きく役立ちます。各パーティションの各テーブルにCHECK CONSTRAINTは、クエリ オプティマイザーが 2 つの日付間の特定のクエリで不要なパーティションをスキップするのに役立つ、日付の境界に基づいています。これまでのところ、すべて正常に動作しています。

ただし、変数であるとしましょう: を使用してクエリを送信するとWHERE [Date] > @StartDate@StartDateクエリ プランは、すべてのパーティションがUNION. 変数よりもパラメーターを優先するようにアドバイスしているリソースをいくつか見つけましたが、同じことが起こります。クエリをストアド プロシージャに変更し、日付の範囲をパラメーターとして渡し、WITH RECOMPILEヒントを追加しましたが、うまくいきませんでした。を発行しDBCC FREEPROCCACHEても役に立ちませんでした。

動的クエリを使用してクエリとパラメーターを連結することを検討しているため、ここでの最良のオプションとして、リテラルの日付範囲を送信します。しかし、それは私を本当に不幸にします (理由はおわかりいただけると思います)。さらに、より良い回避策がなくても、少なくとも何が起こっているのかを理解したい.

4

0 に答える 0