2011-01-03 9 views
0

クエリのパフォーマンスを向上させる手法を実装するよう依頼されました。これは非常に新しいものです。クエリのパフォーマンスチューニング

テクニックは次のとおりです。

上記のクエリで
SELECT tab1.col1 
FROM tab1, tab2 
WHERE tab1.col1 = tab2.col2 
AND tab2.col3 = 'X' 
AND tab1.col4 = 'Y'; 

  1. は、私は上記の使用されているものの参照テーブルは、TAB2のためTAB1とTAB4ためTAB3が言うように2つのテーブルを作成する必要があります。
  2. tab1とtab2のPK値をそれぞれtab3とtab4に挿入します。
  3. tab3とtab4の両方に列を追加して 'condition1'とし、それを上記のクエリでフェッチされたレコードのPK値で更新します。
  4. 'condition1' IS NOT NULL列のチェックを含むクエリでtab3とtab4を使用します。
  5. 元の表のDMLでこの列を更新するトリガーを作成します。

これは一目でシンプルに見えるかもしれませんが、同じテーブルが異なる述語とNクエリ、 で使用されている場合、私はN新しいテーブルとそれに対応するトリガー内の列数を追加する必要があります。

私はこれがデータの重複であり、データベースに大きな負担をかけると信じています。これはパフォーマンスの向上には役立ちません。

これを実装する際のジレンマから私を助けることができれば嬉しいです。事前に

おかげで、 Savitha

+3

私はあなたの同僚がデータベース開発の極端な初心者であり、Oracleコンサルタントにとって真剣な助けが必要だと思います。このデータベースの最終目的は何ですか?また、1日に何行追加しますか?私は意味がありません。ただ残酷に正直です。時には、私たちがSO上で提供できる最善の助けは、あなたが少しの助け以上のものを必要としていることを伝えることです。 –

答えて

2

はあなたが適切にインデックスを使用していることを確認しましたか

+0

私はまだインデックスを考えていません!私は上記の技術を実装しなければならない。 – Savitha

+0

あなたは質問に答えるのではなく、質問しているのなら、それはコメントです。 –

+0

する必要がありますか?私はあなたの本能が正しいと思います、Savitha、あなたは同僚が提案したものを実装すべきではありません。インデックスと優れたデータベースアーキテクチャを読んで、より良い方法を示すことができます。 – ScottCher

1

このようなパフォーマンスチューニングは悪い考えです。それは、索引システムを作り直す愚かな方法のようです。それに対して私は助言するだろう。

関連する問題