0

Oracle と SQL は初めてで、まだ学習段階にあります。

以下のオラクルクエリを調整するのを手伝ってもらえますか?? このテーブルには最大 95 個の lac レコードが含まれており、このクエリを使用してデータを取得するには 1 時間かかります。

あなたの提案/コメント/ヘルプをいただければ幸いです。

前もって感謝します。

    SELECT A.CNO   AS CNO,
       A.FNO AS FNO,
       A.CID AS CID,
       A.IID             AS IID
  FROM CAC_LKP A,
       (SELECT C_DATE, CNO, FNO
          FROM (SELECT MAX(CAC_LKP.C_DATE) AS C_DATE,
                       CAC_LKP.CNO AS CNO,
                       CAC_LKP.FNO AS FNO
                  FROM CAC_LKP
                 WHERE ACTIVE = 'Y'
                 GROUP BY CNO, FNO)) B
 WHERE A.C_DATE = B.C_DATE
   AND A.CNO = B.CNO
   AND A.FNO = B.FNO
   AND A.ACTIVE = 'Y'

主キーは、c_date、iid、active の組み合わせで定義されます。

4

2 に答える 2

0

膨大なデータがあるため、不要なサブクエリを削除するとパフォーマンスが向上します。C_DATE、CNO、FNO、および A.ACTIVE にインデックスがあることを確認してください。このSQLを試してください

SELECT A.CNO   AS CNO,
       A.FNO AS FNO,
       A.CID AS CID,
       A.IID             AS IID
  FROM CAC_LKP A,
       (SELECT MAX(CAC_LKP.C_DATE) AS C_DATE,
                       CAC_LKP.CNO AS CNO,
                       CAC_LKP.FNO AS FNO
                  FROM CAC_LKP
                 WHERE ACTIVE = 'Y'
                 GROUP BY CNO, FNO) B
 WHERE A.C_DATE = B.C_DATE
   AND A.CNO = B.CNO
   AND A.FNO = B.FNO
   AND A.ACTIVE = 'Y'
于 2013-06-01T07:58:44.260 に答える