Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server:INNER JOIN след UNION води до бавно хеш съвпадение (обобщен)

Имал съм ситуации, в които UNION е направил заявка много по-бавно от UNION ALL с DISTINCT след това. Така че, въпреки че нямам обяснение за лошия план на заявката (статистиката и индексите са наред?), предлагам да опитате следното:

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. Списък на таблиците, използвани във всички съхранени процедури с името на схемата на SP

  2. Изберете n произволни реда от таблицата на SQL Server

  3. Запазване на байтов масив в sql сървър

  4. Заявката се изпълнява бързо, но работи бавно в съхранената процедура

  5. Игнорирайте определени колони, когато използвате BULK INSERT