Tôi đã gặp phải tình huống UNION
đã thực hiện một truy vấn chậm hơn nhiều so với UNION ALL
với DISTINCT
sau đó. Vì vậy, mặc dù tôi không có lời giải thích cho kế hoạch truy vấn tồi (thống kê và chỉ mục ổn chứ?), Tôi khuyên bạn nên thử những cách sau:
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
)