あるテーブルのスクラップレコードを、マシン上で同時に実行されているマテリアルを示すレコードと照合する必要があります。私はスクラップの数とマシン上の材料が変更されるたびに記録を持つテーブルを備えたテーブルを持っています。日付範囲でレコードを結合する方法
私は下に簡略化されたバージョンが含まれますが、大規模なデータセットに適用すると非常に遅いという動作確認クエリがあります。私はOracleの分析機能の1つを高速化するために試してみたいですが、どのように把握できないのでしょうか。私はFIRST_VALUEとROW_NUMBERをいくつかの異なる形式で試しましたが、正しく取得できませんでした。提案を探しています。
詳細をご希望の場合はお知らせください。
スクラップ測定値テーブル(〜41メートルの行)
- マシン
- ScrapReasonCode
- ScrapQuantity
- ReportTime
次の表の単純化したバージョンですの
素材番号(〜3メートルの行)
- マシン
- MaterialNumber
- MEASUREMENT_TIMESTAMP
SELECT Scrap.Machine,
Scrap.MaterialNumber,
Scrap.ScrapReasonCode,
Scrap.ScrapQuantity,
Scrap.ReportTime
FROM Scrap, Materials
WHERE Scrap.Machine = Materials.Machine
AND Materials.MEASUREMENT_TIMESTAMP =
(SELECT MAX (M2.MEASUREMENT_TIMESTAMP)
FROM Materials M2
WHERE M2.Materials.Machine = Scrap.Machine
AND M2.MEASUREMENT_TIMESTAMP <= Scrap.ReportTime)
私はスクラップレコードのReportTimeの前に最新のMEASUREMENT_TIMESTAMPが必要です。 –
編集が取得しようとしているものかどうかを確認します。 –
私はそれを働かせることができました。 :) –