sql >> Databáze >  >> RDS >> Sqlserver

SQL Server:INNER JOIN po UNION vede k pomalému Hash Match (agregát)

Zažil jsem situace, kdy UNION 's udělal dotaz mnohem pomalejší než UNION ALL s DISTINCT později. Takže i když nemám vysvětlení pro špatný plán dotazů (statistiky a indexy jsou v pořádku?), navrhuji, abyste zkusili následující:

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. PostgreSQL, SELECT z max id

  2. Jak opravit tento příkaz IF-ELSE-THEN ve spouštěči MySQL

  3. Jak vytvořit databázi PostgreSQL

  4. Prázdný výstup PHP z databáze MySQL pro longblob