Không.
Điều này đã từng đúng trong một thời gian dài trước đây (và không còn nữa, ít nhất là kể từ SQL Server 2000), hoặc nó không bao giờ đúng và DBA của bạn chỉ nhầm lẫn đề xuất của anh ta với câu sau :
Điều quan trọng là nhóm tất cả các câu lệnh DDL (như tạo các chỉ mục) cho các bảng tạm thời khi bắt đầu một thủ tục được lưu trữ. Bằng cách đặt các câu lệnh DDL này cùng với các phần tổng hợp không cần thiết do thay đổi lược đồ có thể tránh được.
Bạn có thể tìm thấy một lời giải thích khác về lý do đằng sau khuyến nghị này trên trang này .
Nếu chúng ta xem Microsoft KB này , chúng ta sẽ thấy rằng nguyên nhân của quá trình biên dịch lại thủ tục được lưu trữ có thể là một trong những điều sau đây (SQL Server 2005+):
- Lược đồ thay đổi.
- Thống kê thay đổi.
- Biên dịch lại DNR.
- Đặt tùy chọn thay đổi.
- Bảng tạm thời thay đổi.
- Hàng từ xa thay đổi.
- Để duyệt perms thay đổi.
- Môi trường thông báo truy vấn đã thay đổi.
- Quan điểm của Bộ KH & ĐT đã thay đổi.
- Tùy chọn con trỏ thay đổi.
- Với tùy chọn biên dịch lại.
Khai báo một biến - ngay cả một biến bảng (nghĩa là @table_variable
) - rõ ràng không thể kích hoạt bất kỳ sự kiện nào trong số này, bởi vì khai báo một biến không được tính là DDL . Một biến (thậm chí là biến bảng) là một đối tượng tạm thời được sử dụng riêng cho lập trình T-SQL của bạn. Đó là lý do tại sao các biến bảng không có số liệu thống kê và không bị ràng buộc bởi các giao dịch . Khai báo một biến (bảng hoặc không) không thể kích hoạt biên dịch lại.
#temp_table
Tuy nhiên, việc tạo bảng tạm thời (ví dụ ) hoặc chỉ mục là DDL ảnh hưởng đến định nghĩa vật lý của cơ sở dữ liệu. Các bảng và chỉ mục tạm thời là các đối tượng "thực" có thống kê và kiểm soát giao dịch, do đó, việc tạo chúng có thể kích hoạt bất kỳ sự kiện 1, 2 hoặc 5 nào trong danh sách trên và do đó kích hoạt tính năng biên dịch lại.