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

Sử dụng các biến trong truy vấn tạo ra các sơ đồ truy vấn khác nhau

Bởi vì khi bạn sử dụng các giá trị CỐ ĐỊNH khi tắt TỰ ĐỘNG HÓA THÔNG SỐ, thì kế hoạch truy vấn biết CHÍNH XÁC giá trị nào nó cần để chạy truy vấn. Vì vậy, kế hoạch được điều chỉnh CỤ THỂ phù hợp với các giá trị đó.

Tuy nhiên khi bạn sử dụng các biến, kế hoạch sẽ được đưa vào Bộ đệm ẩn truy vấn là kế hoạch chứa các biến được tham số hóa - có thể được thay thế bằng bất kỳ biến nào và sẽ sử dụng lại cùng một kế hoạch. Do đó, các kế hoạch này sẽ phải mạnh mẽ và chung chung hơn để xử lý "trường hợp trung bình tốt nhất".

Trong SQL Server 2008, bạn có thể đặt các tham số đơn giản có được tự động tham số hóa hay không để bạn luôn có được kế hoạch "trường hợp trung bình tốt nhất" - với tất cả những điều tốt và xấu của nó.

Tham khảo:

CHỈNH SỬA - về hiệu suất

Đối với hiệu suất, trình tối ưu hóa có thể sai - trong trường hợp này, trình tối ưu hóa đã xem xét thống kê for the exact values và cảm thấy rằng chỉ mục không hữu ích (có thể là một vấn đề về điểm tới hạn) vì vậy kế hoạch là để quét theo cụm thay thế. Việc có bắt buộc một kế hoạch truy vấn hay không - nhưng rõ ràng việc sử dụng chỉ mục sẽ nhanh hơn 50% đối với

  1. phần cứng cụ thể
  2. phân phối dữ liệu thời điểm cụ thể
  3. các giá trị cụ thể đã cho

Trừ khi tôi có một lý do rất chính đáng, tôi sẽ không chơi trò chơi Trình tối ưu hóa truy vấn (ví dụ:sử dụng gợi ý chỉ mục) trừ khi tôi có nhiều dữ liệu để chứng minh rằng nó sẽ luôn làm cho nó nhanh hơ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. CẬP NHẬT-no-op trong câu lệnh SQL MERGE

  2. Lưu trữ một lượng lớn dữ liệu cũ trong SQL Server

  3. Làm thế nào để kiểm tra chuỗi không rỗng và không rỗng trong máy chủ SQL?

  4. Cách SCHEMA_ID () hoạt động trong SQL Server

  5. Chuyển đổi nvarchar thành datetime trong SQL Server 2008 số học tràn