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

Kết quả không mong đợi từ CTE

Không có gì bất ngờ về kết quả đó, ngoại trừ có thể nếu bạn không hiểu nó.

Mỗi CTE được giải quyết each and every time nó được tham chiếu. Có, đây là lý do tại sao CTE đơn giản trên bảng có tính giao dịch cao có thể trả về 4 hàng trong một tham chiếu và 5 hàng ở 2 cấp tiếp theo.

Tuy nhiên, trên mẫu của bạn, đó là do ORDER BY NEWID (), cung cấp cho mỗi độ phân giải của CTE ban đầu một row_number () - ing khác nhau. Bạn có nghĩ rằng CTE được lưu trữ trong bộ nhớ và được lưu vào bộ nhớ đệm không? Trên trang SQLFiddle, dưới kết quả của bạn, có một liên kết "xem kế hoạch thực hiện". Nó hiển thị 2 lần quét bảng riêng biệt, riêng biệt .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thuộc tính phụ thuộc trong ReferentialConstraint được ánh xạ tới cột do cửa hàng tạo

  2. Siêu dữ liệu SQL Server trong intellisense?

  3. Nhận số lần đăng nhập không thành công để đăng nhập do sai mật khẩu trong SQL Server (T-SQL)

  4. Làm cách nào để chuyển đổi dữ liệu Hình học thành dữ liệu Địa lý trong MS SQL Server 2008?

  5. Làm cách nào để thoát chuỗi trong SQL Server bằng PHP?