1 日に数百のサブパーティションを作成するデータベースがあります。これらのパーティションには名前などが付いています。たとえば、これらが複数のブランドの特定のタイプの車であるとしP_20140116_00001, P_20140116_00002,
ましょう。00001 - 99999
現在、1 日の終わりに実行される選択クエリがありますが、最適ではないと感じています。いくつかのフィルター、特に日付を指定します。ただし、クエリを実行する前に、データがどの特定のいくつかのパーティションにあるかはわかっていますが、すべてのパーティションにクエリを実行させます (と思います)。別の (非常に単純で高速な) ネストされたクエリを実行することで、目的のパーティションを指定できました。それがより効率的かどうかはわかりませんが、そのように感じます。以下に例を示します。
たとえば、今日販売されたすべてのフォルクスワーゲンの数を知りたいとします。私が現在持っている選択クエリは、インデックス付きフィールド「ブランド」がフォルクスワーゲンであり、使用されるパーティションが今日であることのみを指定しています。ただし、00003, 00103, and 00203
の型のみVolkswagen
であることはわかっています。つまり、これら 3 つのパーティションで結果につながるデータのみが存在することになります。
私の質問は次のとおりです。
- このクエリは、その日の他のすべてのサブパーティションのすべてのデータに対して実行されますか?クエリがそこにヒットしないことはわかっていますが?
- 次のようなことを行うことで、目的のデータがあることがわかっているパーティションのみをターゲットにすることは可能ですか?
P_[sysdate]_[substring in (select type_id from db.types where name = 'Volkswagen')] ?
- これにより、クエリの効率が向上しますか?
- 現在よりも効率的に目的の結果を得る別の方法はありますか?
情報ありがとうございます!