Ich habe Situationen erlebt, in denen UNION
's hat eine Abfrage viel langsamer gemacht als UNION ALL
mit einem DISTINCT
danach. Obwohl ich keine Erklärung für den schlechten Abfrageplan habe (Statistiken und Indizes sind in Ordnung?), schlage ich vor, dass Sie Folgendes versuchen:
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
)