1

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')] ?
  • これにより、クエリの効率が向上しますか?
  • 現在よりも効率的に目的の結果を得る別の方法はありますか?

情報ありがとうございます!

4

0 に答える 0