Quantcast
Channel: 楽天 みんなで解決!Q&A 新着質問([技術者向] コンピューター/205)
Viewing all articles
Browse latest Browse all 29232

DB2 SQLチューニングについて

$
0
0
いつもお世話になっております。 DB2のSQLチューニングで改善案が浮かばず どなたかお知恵を拝借したい次第です。 現状は複数テーブルをJOINで結合したものを DISTINCTでまとめています。 ですが、あまりにもデータ量が多くCPUに負荷がかかり、 SQLエラーを起こしてしまいます。 もはやレスポンス改善以外の道がないのですが、 以下は試しても改善されませんでした。 ・DITINCTをやめて単純なSELECTのみとして、  まとめはJavaロジックで実施  SQLは重いまま。 ・結合条件をサブクエリに変えて実施  余計に遅くなり、返ってこなくなった。 上記を施す前のSQLは以下です。 テーブルは4つ(A1, A2, A3, A4) SELECT DISTINCT A1.AAA A1.BBB A1.CCC A2.DDD A2.EEE A2.FFF A2.GGG A3.HHH A3.JJJ A3.KKK A3.LLL A3.MMM A3.NNN A3.OOO A4.PPP A4.QQQ A4.RRR A4.XXX A4.YYY A4.ZZZ FROM DB.A1TBL A1 INNER JOIN DB.A2TBL A2 ON SUBSTR(A2.START_DATE,1,6) <= パラメータ1(YYYYMM形式) AND A2.END_DATE > CONCAT(パラメータ1(YYYYMM形式), '01') AND A1.NUMBER = A2.NUMBER AND A1.MACHIN_ID = A2.MACHIN_ID AND A1.TYPE = A2.TYPE AND A2.DELETE_DATE > CURRENT TIMESTAMP INNER JOIN DB.A3TBL A3 ON SUBSTR(A3.START_DATE,1,6) <= パラメータ1(YYYYMM形式) AND A2.END_DATE > CONCAT(パラメータ1(YYYYMM形式), '01') AND A2.NUMBER = A3.NUMBER AND A2.MACHIN_ID = A3.MACHIN_ID AND A2.TYPE = A3.TYPE AND A2.COLOR = A3.COLOR AND A3.DELETE_DATE > CURRENT TIMESTAMP LEFT OUTER JOIN DB.A4TBL A4 ON STANDARD_MM = パラメータ1(YYYYMM形式) AND A3.END_DATE > CONCAT(パラメータ1(YYYYMM形式), '01') AND A3.NUMBER = A4.NUMBER AND A3.MACHIN_ID = A4.MACHIN_ID AND A3.IN_PLACE_CD = A4.IN_PLACE_CD AND A3.OUT_PLACE_CD = A4.OUT_PLACE_CD AND A3.TYPE = A4.TYPE AND A3.COLOR = A4.COLOR AND A4.DELETE_DATE > CURRENT TIMESTAMP WHERE A1.NUMBER = パラメータ0 AND SUBSTR(A1.START_DATE,1,6) <= パラメータ1(YYYYMM形式) AND A1.END_DATE > CONCAT(パラメータ1(YYYYMM形式), '01') AND A3.KBN LIKE '%' AND A2.ITEM_CD LIKE '%' AND A1.TYPE LIKE '%' AND A2.MACHIN_ID LIKE '%' AND A1.DELETE_DATE > CURRENT TIMESTAMP FOR FETCH ONLY 以上です。 何卒宜しくお願い致します。

Viewing all articles
Browse latest Browse all 29232

Trending Articles