sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server:INNER JOIN efter UNION fører til langsom Hash Match (Aggregate)

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
)


  1. Bedste praksis for effektiv lagring af md5-hash i mysql

  2. forståelse mysql forklare

  3. Brug af LEFT JOIN til kun at vælge én sammenføjet række

  4. Hive 1.2 Metastore Service starter ikke efter at have konfigureret den til S3-lagring i stedet for HDFS