Saya pernah mengalami situasi di mana UNION
's membuat kueri jauh lebih lambat daripada UNION ALL
dengan DISTINCT
setelah itu. Jadi, sementara saya tidak memiliki penjelasan untuk rencana kueri yang buruk (statistik dan indeks boleh?), saya sarankan Anda mencoba yang berikut:
select distinct * from (
select *
from #finalResults
where intervalEnd is not null
union all
select
two.startTime,
two.endTime,
two.intervalEnd,
one.barcodeID,
one.id,
one.pairId,
one.bookingTypeID,
one.cardID,
one.factor,
two.openIntervals,
two.factorSumConcurrentJobs
from #finalResults as one
inner join #finalResults as two
on two.cardID = one.cardID
and two.startTime > one.startTime
and two.startTime < one.intervalEnd
)