Gần đây tôi đã đưa ra một inetrview trong đó người phỏng vấn yêu cầu tôi giải thích sự khác biệt cơ bản nhất giữa thủ tục lưu trữ và UDF.Lưu trữ thủ tục vs Chức năng biên dịch và hiệu suất khác biệt
Tôi đã có thể gọi lại một số khác biệt là listed here nhưng anh ấy không chấp nhận bất kỳ sự kiện nào trong số đó là sự khác biệt BASIC.
Trả lời theo ông là SP chỉ được biên dịch một lần trong khi UDF được biên dịch mỗi khi chúng được gọi là kết quả UDF chậm hơn đáng kể so với quy trình được lưu trữ.
Bây giờ tôi đã tìm kiếm nhưng không thể nhận được câu trả lời rõ ràng cho dù xác nhận này có đúng không. Vui lòng xác minh điều này.
Tôi biết rằng số hàng ước tính được tính cho UDF là 1 lần ... –
Chúng sai. Các UDF không được biên dịch lại mỗi khi chúng được gọi. Điều này có thể chứng minh một số cách. ví dụ. theo dõi (tái) các sự kiện biên dịch trong hồ sơ, xem xét kế hoạch bộ đệm ẩn DMV. [Câu trả lời của tôi ở đây] (http://stackoverflow.com/questions/19884138/why-sql-functions-are-faster-than-udf/19891697#19891697) xem xét các dấu vết ngăn xếp khi thực thi UDF nhiều lần. Chi phí là trong quá trình thực hiện không biên dịch. –
Loại hàm nào - vô hướng hoặc giá trị bảng có giá trị nhiều bảng hoặc bảng nội tuyến?Ba loại này là các kiểu đối tượng khác nhau với các cơ chế thực hiện khác nhau (các TVF nội tuyến được inlined, ví dụ :-). –