Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tối ưu hóa Sql:Xml hoặc Chuỗi phân cách

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nơi sử dụng Áp dụng bên ngoài

  2. T-SQL có hàm tổng hợp để nối các chuỗi không?

  3. Cách lấy Giá trị trước cho Giá trị Null

  4. SQL:chỉ viết hoa chữ cái đầu tiên

  5. SQL Server CHỌN vào bảng hiện có