Erland Sommarskog đã duy trì câu trả lời có thẩm quyền cho câu hỏi này trong 16 năm qua: Mảng và danh sách trong SQL Server .
Có ít nhất một tá cách để chuyển một mảng hoặc danh sách cho một truy vấn; mỗi cái đều có ưu và nhược điểm riêng.
- Các Tham số Giá trị Bảng. Chỉ SQL Server 2008 trở lên và có lẽ là cách gần nhất với cách tiếp cận phổ biến "tốt nhất".
- Phương pháp Lặp lại. Chuyển một chuỗi được phân tách và lặp qua nó.
- Sử dụng CLR. SQL Server 2005 trở lên chỉ từ các ngôn ngữ .NET.
- XML. Rất tốt để chèn nhiều hàng; có thể quá mức cần thiết đối với các CHỌN.
- Bảng Số. Hiệu suất / độ phức tạp cao hơn so với phương pháp lặp lại đơn giản.
- Phần tử có độ dài cố định. Độ dài cố định cải thiện tốc độ đối với chuỗi được phân tách
- Chức năng của Số. Các biến thể của Bảng số và độ dài cố định trong đó số được tạo trong một hàm chứ không phải lấy từ bảng.
- Biểu thức Bảng Chung đệ quy (CTE). SQL Server 2005 trở lên, vẫn không quá phức tạp và hiệu suất cao hơn so với phương pháp lặp.
- SQL động. Có thể chậm và có tác động bảo mật.
- Chuyển Danh sách Nhiều Tham số. Tẻ nhạt và dễ xảy ra lỗi, nhưng đơn giản.
- Phương pháp Thực sự chậm. Các phương thức sử dụng charindex, patindex hoặc LIKE.
Tôi thực sự không thể giới thiệu đủ để đọc bài báo để tìm hiểu về sự cân bằng giữa tất cả các lựa chọn này.