Tôi có cùng một phép tính trong cả hai mệnh đề CHỌN và NHÓM THEO. Là máy chủ SQL thực sự thực hiện các tính toán này hai lần, hay nó đủ thông minh để chỉ thực hiện một lần?
Câu trả lời đơn giản là SQL Server không đảm bảo chung về thời điểm và bao nhiêu lần, một biểu thức vô hướng sẽ được đánh giá tại thời điểm thực hiện.
Có tất cả các loại hành vi phức tạp (và không có giấy tờ) trong trình tối ưu hóa và công cụ thực thi liên quan đến vị trí, thực thi và lưu trữ các biểu thức vô hướng. Sách trực tuyến không có nhiều điều để nói về điều này, nhưng những gì nó nói là thế này:

Điều này mô tả một trong những hành vi mà tôi đã đề cập trước đó, trì hoãn việc thực hiện các biểu thức. Tôi đã viết về một số hành vi hiện tại khác (có thể thay đổi bất cứ lúc nào) trong bài đăng trên blog này .
Một xem xét khác là mô hình chi phí được sử dụng bởi trình tối ưu hóa truy vấn hiện không làm được gì nhiều trong cách ước tính chi phí cho các biểu thức vô hướng. Không có khung chi phí mạnh mẽ, các kết quả hiện tại được dựa trên các heuristic rộng hoặc cơ hội thuần túy.
Đối với các biểu thức rất đơn giản, có lẽ nó không tạo ra nhiều khác biệt cho dù biểu thức được đánh giá một lần hay nhiều lần trong hầu hết các trường hợp. Điều đó nói rằng, tôi đã gặp phải các truy vấn lớn trong đó hiệu năng đã bị ảnh hưởng bất lợi khi biểu thức được đánh giá một cách dư thừa một số lần rất lớn hoặc việc đánh giá xảy ra trên một luồng trong đó có thể thuận lợi để đánh giá trong một nhánh song song của thực thi kế hoạch.
Tóm lại, hành vi hiện tại không được xác định và không có gì nhiều trong các kế hoạch thực hiện để giúp bạn tìm hiểu điều gì đã xảy ra (và sẽ không thuận tiện khi đính kèm trình gỡ lỗi để kiểm tra các hành vi chi tiết của công cụ, như trong bài đăng trên blog).
Nếu bạn gặp phải trường hợp vấn đề đánh giá vô hướng có liên quan đến hiệu suất, hãy nêu vấn đề với Hỗ trợ của Microsoft. Đây là cách tốt nhất để cung cấp phản hồi để cải thiện các phiên bản tương lai của sản phẩm.