Trong SQL Server, sự khác biệt giữa hàm Scalar-valued Function và Inline Table-valued Function là gì, và tại sao việc sử dụng Scalar-valued Function thường gây suy giảm hiệu năng trong các truy vấn lớn?
Phân tích sự khác biệt
- Scalar-valued Function (SVF): Trả về một giá trị đơn lẻ. SQL Server thường thực thi hàm này theo kiểu từng dòng (row-by-row), điều này tạo ra chi phí overhead rất lớn khi xử lý trên tập dữ liệu lớn.
- Inline Table-valued Function (iTVF): Trả về một bảng kết quả. SQL Server coi iTVF như một View được tham số hóa, cho phép Query Optimizer tích hợp logic của hàm trực tiếp vào Execution Plan của câu truy vấn chính.
Tại sao SVF gây suy giảm hiệu năng?
- Rào cản tối ưu hóa: SVF hoạt động như một hộp đen (black box) đối với Query Optimizer, ngăn cản việc thực hiện các kỹ thuật tối ưu như Parallelism hoặc Index Seek.
- Chi phí ngữ cảnh: Việc chuyển đổi ngữ cảnh (context switching) giữa engine thực thi câu lệnh SQL và engine thực thi hàm cho mỗi dòng dữ liệu là cực kỳ tốn kém.
Lời khuyên thực chiến
Nên ưu tiên sử dụng iTVF thay vì SVF. Nếu bắt buộc phải dùng hàm, hãy cân nhắc chuyển logic đó vào Stored Procedure hoặc sử dụng CROSS APPLY với một iTVF để đạt hiệu năng tốt nhất.
Làm Chủ Phỏng Vấn & Nâng Cao Trình Độ Chuyên Nghiệp
Hệ thống khóa học thực chiến chuẩn Enterprise giúp bạn tự tin chinh phục mọi kỳ phỏng vấn kỹ thuật và thăng tiến thu nhập.
Tải Tuyển Tập 100+ Câu Hỏi Phỏng Vấn Chuyên Sâu (PDF)
Bộ tài liệu chuẩn Senior do Unicode Academy tuyển chọn & biên soạn, hỗ trợ tải về định dạng PDF chuẩn in ấn.
Cần Mentor Phỏng Vấn Thử 1-1 & Tối Ưu CV?
Mô phỏng phỏng vấn kỹ thuật thực tế 1-1 qua Google Meet, nhận xét chi tiết điểm mạnh/yếu và sửa CV trực tiếp cùng giảng viên Unicode.
Kiểm Tra CV Chuẩn ATS Miễn Phí
Tải CV của bạn lên để hệ thống AI rà soát từ khóa kỹ năng, định dạng và tính điểm chuẩn nhà tuyển dụng.
Câu hỏi sql server liên quan cùng chủ đề
- Làm thế nào để tối ưu hóa hiệu năng và quản lý Indexes optimization trong dự án SQL Server? Entry
- Làm thế nào để tối ưu hóa hiệu năng và quản lý Backup & Restore strategies trong dự án SQL Server? Entry
- Hãy giải thích chi tiết cơ chế hoạt động của Stored Procedures trong lập trình SQL Server. Junior
- Hãy giải thích chi tiết cơ chế hoạt động của SSIS integration package trong lập trình SQL Server. Junior
- Trong SQL Server, tại sao việc sử dụng hàm xử lý trên cột (như hàm YEAR(), MONTH(), hoặc hàm chuyển đổi kiểu dữ liệu) trong mệnh đề WHERE lại làm mất tác dụng của Index (SARGability)? Junior


