Quay lại thư viện câu hỏi
t-sql Middle

Sự khác biệt cốt lõi giữa Stored Procedure và User-Defined Function (UDF) trong T-SQL là gì, và việc lựa chọn sai đối tượng này ảnh hưởng thế nào đến kiến trúc hệ thống?

1. Phân biệt Stored Procedure và UDF

  • Stored Procedure (SP):
    • Có thể thực hiện các thao tác thay đổi dữ liệu (DML: INSERT, UPDATE, DELETE) và quản trị hệ thống (DDL).
    • Hỗ trợ trả về nhiều tập dữ liệu (result sets), tham số đầu ra (OUTPUT parameters) và mã trạng thái trả về (RETURN value).
    • Không thể được gọi trực tiếp bên trong một câu lệnh SELECT.
  • User-Defined Function (UDF):
    • Scalar Function và Inline Table-Valued Function chỉ thực hiện đọc dữ liệu (không được chứa các lệnh thay đổi dữ liệu hoặc gọi stored procedure).
    • Có thể được lồng trực tiếp vào trong các câu lệnh SELECT, WHERE, JOIN.

2. Ảnh hưởng kiến trúc khi sử dụng sai

  • Lạm dụng Scalar UDF: Scalar UDF thực thi một cách tuần tự cho từng dòng dữ liệu trong tập kết quả (Row-by-row execution), gây suy giảm hiệu năng nghiêm trọng (Performance bottleneck) trên các bảng lớn. Từ SQL Server 2019, tính năng Scalar UDF Inlining đã được giới thiệu để khắc phục phần nào, nhưng bản chất kiến trúc vẫn nên hạn chế.
  • Sử dụng sai Multi-Statement Table-Valued Functions (MSTVF): MSTVF khai báo một biến bảng bên trong và trả về nó. SQL Server thường ước lượng số dòng sai lệch nghiêm trọng (thường cố định là 1 hoặc 100 dòng) đối với MSTVF, dẫn đến Execution Plan kém tối ưu.

3. Lựa chọn tối ưu

  • Sử dụng Stored Procedure cho các business logic phức tạp, xử lý dữ liệu hàng loạt (Batch processing), tương tác DML.
  • Sử dụng Inline Table-Valued Function (ITVF) thay cho Scalar UDF và MSTVF khi cần tái sử dụng logic truy vấn có trả về bảng, vì ITVF được biên dịch nội tuyến (inlined) vào câu lệnh gọi chính giống như một View có tham số.

4. Lưu ý thực chiến Enterprise

Tránh tuyệt đối việc viết Business Logic phức tạp nằm sâu bên trong các Scalar UDF được gọi từ câu lệnh SELECT của các báo cáo lớn.

Luyện tập câu hỏi này trong chế độ đếm ngược mô phỏng phỏng vấn thật:
Phòng Luyện Tập
Khóa học Chuyên sâu Chủ đề t-sql

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.

High-Ticket Mentoring
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.

AI Resume Scanner
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.

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học