Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server:INNER JOIN po UNION prowadzi do powolnego dopasowania skrótu (agregacja)

Doświadczyłem sytuacji, w których UNION spowodowało, że zapytanie było znacznie wolniejsze niż UNION ALL z DISTINCT następnie. Więc chociaż nie mam wyjaśnienia złego planu zapytań (statystyki i indeksy są w porządku?), sugeruję, abyś spróbował:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Unikaj nazywania procedur przechowywanych przez użytkownika SP% lub SP_%

  2. Jak pobrać plik przechowywany w bazie danych SQL w formacie binarnym?

  3. Jak zmienić typ danych kolumny w bazie danych SQL bez utraty danych?

  4. Mapowanie znaków / wyszukiwanie i zamiana znak po znaku w SQL Server 2008 R2

  5. Sformatować czas jako 24-godzinny czas wojskowy?