かなり大規模な SQL クエリがあり、パフォーマンスがかなり低下しています。(クエリ プランの分析による) 問題の 1 つは、結合の数です。
基本的に、ユーザーに表示する値を取得するために、別のテーブルを検索する必要があるデータに値があります。問題は、同じルックアップが必要な 4 つの異なる列があるため、同じテーブルで 4 回結合を行うことです。
うまくいけば、この図はそれをより明確にするかもしれません
Raw_Event_data
event_id, datetime_id, lookup_1, lookup_2, lookup_3, lookup_4
1, 2013-01-01_12:00, 1, 5, 3, 9
2, 2013-01-01_12:00, 121, 5, 8, 19
3, 2013-01-01_12:00, 11, 2, 3, 32
4, 2013-01-01_12:00, 15, 2, 1, 0
Lookup_table
lookup_id, lookup_desc
1, desc1
2, desc2
3, desc3
...
クエリは次のようになります
Select
raw.event_id,
raw.datetime_id,
lookup1.lookup_desc,
lookup2.lookup_desc,
lookup3.lookup_desc,
lookup4.lookup_desc,
FROM
Raw_Event_data raw, Lookup_table lookup1,Lookup_table lookup2,Lookup_table lookup3,Lookup_table lookup4
WHERE raw.event_id = 1 AND
raw.lookup_1 *= lookup1 AND
raw.lookup_2 *= lookup2.lookup_id AND
raw.lookup_3 *= lookup3.lookup_id AND
raw.lookup_4 *= lookup4.lookup_id
だから私は出力として得る
1, 2013-01-01_12:00, desc1, desc5, desc3, desc9
私が言ったように、クエリは機能しますが、結合によってパフォーマンスが低下しています。これは単純化した例です。実際には、上記のように 12 個の結合があり、特定のイベントを選択するのではなく、一連のイベントを選択します。
問題は、これらの結合を行うためのより良い方法があるかどうかです。