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

Thay thế cho việc sử dụng các biến cục bộ trong mệnh đề where

Sử dụng biến cục bộ tại bộ lọc WHERE gây ra QUÉT BẢNG ĐẦY ĐỦ. Vì SS không biết giá trị của các biến cục bộ tại thời điểm biên dịch. Vì vậy, nó tạo ra một kế hoạch thực thi cho quy mô lớn nhất có thể có sẵn cho cột.

Để ngăn chặn vấn đề hiệu suất, SS phải biết giá trị của các biến tại thời điểm biên dịch. Xác định SP và chuyển các biến thể cục bộ này làm tham số là một trong những giải pháp của vấn đề. Một giải pháp khác là sử dụng sp_executesql và chuyển lại các biến cục bộ đó dưới dạng tham số ...

Hoặc bạn có thể thêm TÙY CHỌN (RECOMPILE) ở cuối câu lệnh sql của bạn để làm cho các biến thể cục bộ của bạn được biên dịch. Điều này sẽ giải quyết vấn đề về người biểu diễn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server Agent Job Thông báo cho nhiều nhà khai thác khi bị lỗi

  2. Thêm một cột vào tất cả các bảng người dùng trong t-sql

  3. Cách cập nhật thống kê máy chủ SQL cho bảng lớn

  4. Cách tốt nhất để sao chép cơ sở dữ liệu (SQL Server 2008)

  5. SQL để tìm ký tự không phải số đầu tiên trong một chuỗi