Hiện có tùy chọn thứ 4 - tham số có giá trị bảng , theo đó bạn thực sự có thể chuyển một bảng các giá trị vào một tham số như một tham số và sau đó sử dụng nó như một biến bảng thông thường. Tôi thích cách tiếp cận này hơn cách tiếp cận phân tích cú pháp XML (hoặc CSV)
Tôi không thể trích dẫn số liệu hiệu suất giữa tất cả các cách tiếp cận khác nhau, nhưng đó là cách tôi đang thử - tôi khuyên bạn nên thực hiện một số bài kiểm tra hiệu suất thực tế trên chúng.
Chỉnh sửa:
Thêm một chút về TVP. Để chuyển các giá trị vào chương trình mầm non của bạn, bạn chỉ cần xác định một SqlParameter (SqlDbType.Structured) - giá trị này có thể được đặt thành bất kỳ nguồn IEnumerable, DataTable hoặc DbDataReader nào. Vì vậy, có lẽ, bạn đã có danh sách các giá trị trong một danh sách / mảng của một số loại - bạn không cần phải làm bất cứ điều gì để chuyển đổi nó thành XML hoặc CSV.
Tôi nghĩ rằng điều này cũng làm cho mầm trở nên rõ ràng hơn, đơn giản hơn và dễ bảo trì hơn, mang lại một cách tự nhiên hơn để đạt được kết quả cuối cùng. Một trong những điểm chính là SQL hoạt động tốt nhất ở các hoạt động thao tác dựa trên bộ / không lặp / không chuỗi.
Điều đó không có nghĩa là nó sẽ hoạt động tốt với một bộ giá trị lớn được truyền vào. Nhưng với các bộ nhỏ hơn (lên đến ~ 1000) thì sẽ ổn.