Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server:INNER JOIN sau UNION dẫn đến Hash Match (Tổng hợp) chậm

Tôi đã gặp phải tình huống UNION đã thực hiện một truy vấn chậm hơn nhiều so với UNION ALL với DISTINCT sau đó. Vì vậy, mặc dù tôi không có lời giải thích cho kế hoạch truy vấn tồi (thống kê và chỉ mục ổn chứ?), Tôi khuyên bạn nên thử những cách sau:

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. Dapper.NET và proc được lưu trữ với nhiều bộ kết quả

  2. Nhận Giờ và phút (HH:MM) kể từ ngày

  3. Bạn có thể tạo CLR UDT để cho phép loại Bảng được chia sẻ trên các cơ sở dữ liệu không?

  4. Truy cập TimeZoneInfo từ SQL 2005 Server

  5. Lỗi 0xc0202049:Tác vụ luồng dữ liệu 1:Không thể chèn vào cột chỉ đọc