sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server:INNER JOIN efter UNION leder till långsam Hash Match (Aggregate)

Jag har upplevt situationer där UNION har gjort en fråga mycket långsammare än UNION ALL med en DISTINCT i efterhand. Så även om jag inte har en förklaring till den dåliga frågeplanen (statistik och index är okej?), föreslår jag att du försöker följande:

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
)


  1. Tillåter oracle alternativet för oengagerad läsning?

  2. SQL Server 2017 Steg för steg Installation -2

  3. Anslutningspoolstrategi:bra, dålig eller ful?

  4. Java - Hur anropar man en orakelprocedur med anpassade typer?