Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server:INNER JOIN setelah UNION mengarah ke Hash Match (Agregat) yang lambat

Saya pernah mengalami situasi di mana UNION 's membuat kueri jauh lebih lambat daripada UNION ALL dengan DISTINCT setelah itu. Jadi, sementara saya tidak memiliki penjelasan untuk rencana kueri yang buruk (statistik dan indeks boleh?), saya sarankan Anda mencoba yang berikut:

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. Cara Membuat Prosedur Tersimpan Terikat Skema di SQL Server

  2. SYSDATETIME() vs GETDATE() di SQL Server:Apa Perbedaannya?

  3. Kesalahan fatal:Panggil ke fungsi yang tidak ditentukan sqlsrv_connect() di C:\xampp\htdocs

  4. Menjalankan Skrip SQL Server dari file batch

  5. Kueri SQL mana yang lebih cepat? Filter pada kriteria Gabung atau klausa Di mana?