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

Sử dụng với vs khai báo một bảng tạm thời:hiệu suất / sự khác biệt?

@table cú pháp tạo một biến bảng (một bảng thực tế trong tempdb ) và hiện thực hóa các kết quả cho nó.

WITH cú pháp xác định Biểu thức Bảng Thông thường không được hiện thực hóa và chỉ là một Chế độ xem nội tuyến.

Hầu hết thời gian bạn sẽ tốt hơn bằng cách sử dụng tùy chọn thứ hai. Bạn đề cập rằng đây là bên trong một chức năng. Nếu đây là TVF thì hầu hết thời gian bạn muốn chúng là nội dòng thay vì đa câu lệnh để chúng có thể được mở rộng bởi trình tối ưu hóa - điều này sẽ ngay lập tức không cho phép sử dụng các biến bảng.

Tuy nhiên, đôi khi (giả sử truy vấn cơ bản đắt tiền và bạn muốn tránh nó được thực thi nhiều lần), bạn có thể xác định rằng việc cụ thể hóa các kết quả trung gian sẽ cải thiện hiệu suất trong một số trường hợp cụ thể. Có hiện không có cách nào buộc điều này cho CTE ( mà không bắt buộc hướng dẫn kế hoạch ít nhất )

Trong trường hợp đó, bạn (nói chung) có 3 lựa chọn. A @tablevariable , #localtemp bảng và một ##globaltemp bàn. Tuy nhiên, chỉ cái đầu tiên trong số này được phép sử dụng bên trong một hàm.

Để biết thêm thông tin về sự khác biệt giữa các biến bảng và bảng #temp xem tại đây .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tốt nhất để thực hiện phân trang trên SQL Server là gì?

  2. Cách bỏ thuộc tính nhận dạng của một cột trong bảng SQL Server - Hướng dẫn sử dụng SQL Server / T-SQL 44

  3. Tại sao bạn tạo một Dạng xem trong cơ sở dữ liệu?

  4. Có thể sử dụng MS VS Database Project như một giải pháp hoàn chỉnh để lập phiên bản cơ sở dữ liệu không?

  5. Làm việc với các trường thập phân trong SSIS