以下の結合句を使用すると、ストアドプロシージャ全体が非常に遅く実行されます。私は、同じテーブルから情報を収集するために共用体を使用していますが、2番目と3番目の共用体の句は、フィルタリングのために他の表にも結合します。私はこれが最良のコーディング手法ではないかもしれないと理解し、誰かがより良い構文で私を導くことを望んでいました。SQLのUNION句のパフォーマンスの問題
私はとても好きですが、各シナリオをテストするためのORを使用して、ステータステーブル上の単一のクエリとしてこれを書き換えることができると思いselect ss.int_tran_id
from status ss
where ss.stage in ('ACHPayment_Confirmed', 'HIFV4', 'HIFV5_FTRINF', 'Payment_HIFV5_FTRINF')
UNION
select ss.int_tran_id
from status ss, references rf
where ss.int_tran_id = rf.int_tran_id
and ss.stage = 'PREVDAY'
and rf.mid_ref IS NOT NULL
UNION
select ss.int_tran_id
from status ss, app_data ad, ach aa
where ss.int_tran_id = ad.int_tran_id
and ad.app_data_id = aa.ach_id
and ss.stage = 'PREVDAY'
and aa.par_number IS NOT NULL
人々は何が起こっているか理解するために、あなたのインデックスを含むテーブル構造、およびクエリの実行計画を掲示し、あなたのクエリが – Aleksej
を向上することができる方法をしてくださいは、明確な記録はありますか?はいの場合は、UNION ALLを使用します。実行計画が掲載されていない限り、それ以上のヒントはありません:) –
そのかなり長いですが、ここに添付ファイルとして投稿できますか?そして、いいえ、レコードは区別されません – QuickDrawMcgraw