2

かなり大規模な 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 個の結合があり、特定のイベントを選択するのではなく、一連のイベントを選択します。

問題は、これらの結合を行うためのより良い方法があるかどうかです。

4

2 に答える 2