サブクエリを使用して最初の行を返す次の (例) select ステートメントでパフォーマンスの問題があります。
SELECT ITEM_NUMBER,
PROJECT_NUMBER,
NVL((SELECT DISTINCT
FIRST_VALUE(L.LOCATION) OVER (ORDER BY L.SORT1, L.SORT2 DESC) LOCATION
FROM LOCATIONS L
WHERE L.ITEM_NUMBER=P.ITEM_NUMBER
AND L.PROJECT_NUMBER=P.PROJECT_NUMBER
),
P.PROJECT_NUMBER) LOCATION
FROM PROJECT P
を実行することでDISTINCT
パフォーマンスの問題が発生していますが、別の方法がわかりません。SORT
UNIQUE
ただし、次のようなものが望ましいですが、2 つの select ステートメント内での参照は機能しません。
SELECT ITEM_NUMBER,
PROJECT_NUMBER,
NVL((SELECT LOCATION
FROM (SELECT L.LOCATION LOCATION
ROWNUM RN
FROM LOCATIONS L
WHERE L.ITEM_NUMBER=P.ITEM_NUMBER
AND L.PROJECT_NUMBER=P.PROJECT_NUMBER
ORDER BY L.SORT1, L.SORT2 DESC
) R
WHERE RN <=1
), P.PROJECT_NUMBER) LOCATION
FROM PROJECT P
さらに: - 私の権限では関数を作成できません。- メイン クエリで 10k から 100k のレコードを循環しています。- サブクエリは、1 行に制限する前に 3 ~ 7 行を返す可能性があります。
パフォーマンスを向上させるための支援を歓迎します。