2017-06-14 6 views
4

以下のうち2つのうちどちらが良いでしょうか?最初のクエリでクエリのパフォーマンス:単一の列と複数の列

enter image description here

OR

enter image description here

私は、クエリでLIKE演算子を使用します。 2番目にはANDオペレータを使用します。

最初のテーブルデザインは、データを選択することよりも何らかの利点がありますか? どのような状況で私は最初のテーブル構造と2番目の構造の間で決定する必要がありますか?

+7

最初のテーブルには未フォーマット、未フォーマット、正規化されていないデータが含まれています。照会にはコストがかかり、維持管理にはさらにコストがかかります。私は2番目のテーブルに2つの親指を与えます。 –

+1

2番目の構造は良い方法です 多分後でタイプまたは通貨でフィルタリングする必要があります –

+0

select * from table 1ここで、 '%Type = ODO Currency = EUR%'のようにまたは、table2からtype * = ODOとCurrency = 'EUR'を選択します。どちらが速く働くの? – karz

答えて

1

TypeまたはCurrencyアトリビュートで何も処理する必要がない場合は、最初に、MEASUREMENT_NAMEという名前のテキストのみを使用してください。

TypeまたはCurrencyの値を個別に使用する予定の場合は、条件などの値を使用する場合と同じように、2番目のオプションを使用することをお勧めします。

また、最終的に全体のテキストMEASUREMENT_NAMEの両方を含む複合構造体を作成し、フィルタリングの目的のために値Type & Currencyを分離することができます。これはディスク上でより多くのスペースを必要とし、最適化されませんが、テキスト全体またはMEASUREMENT_NAMEは将来的に最終的に現在はあなたには分からない属性を含むことができます。これは、MEASUREMENT_NAMEを生の形式で保存する理由になります。

属性MEASUREMENT_NAMEが外部ソースから取得するものではなく、自分で作成したデータ構造であり、柔軟な(変更された)構造のレコードを格納する方法を模索する場合は、JSONまたはXMLデータの場合、Oracleはbuilt in functions for JSON dataです。

TypeまたはCurrencyの値にリンクテーブルを使用することもお勧めします。そのため、メインテーブルにはIDリンクのみが外部キーとして含まれています。

1

第2のテーブルは明らかに最初の利点を有する。最初のテーブルからタイプまたは通貨を照会する必要がある場合は、右、左またはその他の機能を使用する必要があります。 また、2番目の表のキー/制約を揃えると、2番目の正規形に従います。

関連する問題