我有下面的union子句导致整体存储过程运行速度非常缓慢。我使用union从同一个表中收集信息,但第二个和第三个union子句也加入到其他表中以进行过滤。我知道这可能不是最好的编码方法,并希望有人能指导我更好的语法。UNION子句性能问题与sql
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