2011-12-21 10 views
0

私はビジネステーブルを持っており、他のマスタデータテーブルを参照する50個の外部キー列があります。 は私のクエリはので、私は50の左外部結合にする必要があり、このような選択クエリ内の結合の数

select ct.id , ct.name , ct.description , st.value , pr.value , sv.value , .... 
from 
core_table ct 
left outer join domain_value st on ct.status_fk = st.id 
left outer join domain_value pr on ct.priority_fk = pr.id 
left outer join domain_value svon ct.severity_fk = sv.id 
....... 
....... 

のように、すべての50個の参照テーブルを結合しているすべてのデータをフェッチします。 これは、このような50の左外部結合を行う権利ですか、これを達成するための他の最適化された方法がありますか?

+0

私は1つのテーブルに50の外部キー列があるのはなぜですか、これは正規化の問題ですか? – Coops

+0

ここではレコードのようなものは50のマスタデータへの参照を持ちます。だから私は同じテーブルにそれを保持することを選択します。それは要件です。 – ashok

答えて

0

Is too many Left Joins a code smell?

これは、いくつかの設計のための完全に合法的なソリューションです。

+0

返信のための "CodeBlend"に感謝しています..あなたは50から100のレフジョインをするのは大丈夫ですか?私はこのテーブルがそれ以上ではない100基準フィールドまで拡張され得ることを参照してください。 100の外部結合もパフォーマンスの問題を引き起こすことはありませんか?基本的にこの理解に基づいて私は私のデザインを進めることができます!! – ashok

関連する問題