Jeg har oplevet situationer, hvor UNION
's lavet en forespørgsel meget langsommere end UNION ALL
med en DISTINCT
bagefter. Så selvom jeg ikke har en forklaring på den dårlige forespørgselsplan (statistikker og indekser er okay?), foreslår jeg, at du prøver følgende:
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
)