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

Tại sao CTE này lại chậm hơn nhiều so với sử dụng bảng tạm thời?

Như bạn có thể thấy trong kế hoạch truy vấn, với CTE, công cụ có quyền áp dụng chúng về cơ bản dưới dạng tra cứu, ngay cả khi bạn muốn tham gia.

Nếu nó không đủ chắc chắn, nó có thể chạy toàn bộ một cách độc lập, trước đó, về cơ bản là tạo ra một bảng tạm thời ... chúng ta hãy chạy nó một lần cho mỗi hàng.

Điều này là hoàn hảo cho các truy vấn đệ quy mà chúng có thể làm như phép thuật.

Nhưng bạn đang thấy - trong các Vòng lặp lồng nhau - nơi nó có thể sai rất nhiều.
Bạn đã tự tìm ra câu trả lời bằng cách thử bảng tạm thời thực.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểu dữ liệu SQL Server BIT báo cáo khác nhau cho truy vấn Xem và Bảng

  2. Gọi báo cáo SSRS bằng cách nhấp vào nút và cần nhận đầu ra dưới dạng tệp PDF

  3. Tại sao độ chính xác lại giảm khi nhân tổng với số khác

  4. Kết quả được phân tách bằng dấu phẩy trong SQL

  5. Tại sao một giao dịch lồng nhau được cam kết ngay cả khi TransactionScope.Complete () không bao giờ được gọi?