0

要件に基づいてデータを抽出するビュー ロジックを作成しました。ビュー ロジックのパフォーマンスを改善するための提案または解決策が必要です。

マイテーブル:

|SID | SREF     |  STYPE  |  SQID  | SNAME | CCID1 | CCID2 | CCID3 |
--------------------------------------------------------------------
|XX  | SREF001  |  HR     |  1     | 10001 | ABC   | DEF   | XYZ   |
|XX  | SREF001  |  HR     |  2     | 10001 | ABC   | DEF   | XYZ   |
|XX  | SREF002  |  KR     |  1     | 10001 | ABC   | DEF   | XYZ   |
|XX  | SREF002  |  KR     |  2     | 10001 | ABC   | DEF   | XYZ   |
|YY  | SREF011  |  HR     |  1     | 20001 | ABC   | DEF   | XYZ   |
|YY  | SREF011  |  HR     |  2     | 20001 | ABC   | DEF   | XYZ   |
|YY  | SREF012  |  KR     |  1     | 20001 | ABC   | DEF   | XYZ   |
|YY  | SREF012  |  KR     |  2     | 20001 | ABC   | DEF   | XYZ   |

私の見解:

CREATE VIEW MYTAB_VIEW AS
SELECT SID, SREF,
   MAX(CASE WHEN STYPE='HR' AND SQID=1 THEN SNAME END) AS HR1_SNAME,
   MAX(CASE WHEN STYPE='HR' AND SQID=1 THEN CCID1 END) AS HR1_CCID1,
   MAX(CASE WHEN STYPE='HR' AND SQID=1 THEN CCID2 END) AS HR1_CCID2,
   MAX(CASE WHEN STYPE='HR' AND SQID=1 THEN CCID3 END) AS HR1_CCID3,
   MAX(CASE WHEN STYPE='HR' AND SQID=2 THEN SNAME END) AS HR2_SNAME,
   MAX(CASE WHEN STYPE='HR' AND SQID=2 THEN CCID1 END) AS HR2_CCID1,
   MAX(CASE WHEN STYPE='HR' AND SQID=2 THEN CCID2 END) AS HR2_CCID2,
   MAX(CASE WHEN STYPE='HR' AND SQID=2 THEN CCID3 END) AS HR2_CCID3,
   MAX(CASE WHEN STYPE='KR' AND SQID=1 THEN SNAME END) AS KR1_SNAME,
   MAX(CASE WHEN STYPE='KR' AND SQID=1 THEN CCID1 END) AS KR1_CCID1,
   MAX(CASE WHEN STYPE='KR' AND SQID=1 THEN CCID2 END) AS KR1_CCID2,
   MAX(CASE WHEN STYPE='KR' AND SQID=1 THEN CCID3 END) AS KR1_CCID3,
   MAX(CASE WHEN STYPE='KR' AND SQID=2 THEN SNAME END) AS KR2_SNAME,
   MAX(CASE WHEN STYPE='KR' AND SQID=2 THEN CCID1 END) AS KR2_CCID1,
   MAX(CASE WHEN STYPE='KR' AND SQID=2 THEN CCID2 END) AS KR2_CCID2,
   MAX(CASE WHEN STYPE='KR' AND SQID=2 THEN CCID3 END) AS KR2_CCID3
FROM MYTABLE
GROUP BY SID, SREF;

「MYTABLE」には数百万のレコードがあります。そのため、ビュー ロジックは、プロダクションで最大のパフォーマンス ヒットになりました。STYPE、SQID、SNAME、CCID1、CCID2、CCID3 のインデックスがあります。でもまだ遅い…。

実行時間は105秒になりました!!

どうすればパフォーマンスを向上させることができるか教えてください...

更新:親切に提案しないでくださいMaterializedView

ありがとう!

4

0 に答える 0