Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Optymalizacja sql:XML lub rozdzielany ciąg

Dostępna jest teraz czwarta opcja — parametry o wartościach w tabeli , dzięki czemu można faktycznie przekazać tabelę wartości do sproc jako parametr, a następnie użyć jej tak, jak zwykle zmiennej tabeli. Wolałbym to podejście niż podejście XML (lub podejście do analizy CSV)

Nie mogę przytoczyć danych dotyczących wydajności między wszystkimi różnymi podejściami, ale to właśnie próbowałbym - polecam wykonanie na nich prawdziwych testów wydajności.

Edytuj:
Trochę więcej w TVP. Aby przekazać wartości do swojego sproc, wystarczy zdefiniować SqlParameter (SqlDbType.Structured) — wartość tego można ustawić na dowolne źródło IEnumerable, DataTable lub DbDataReader. Tak więc przypuszczalnie masz już listę wartości na jakiejś liście/tablicy - nie musisz nic robić, aby przekształcić ją w XML lub CSV.

Myślę, że dzięki temu sproc jest bardziej przejrzysty, prostszy i łatwiejszy w utrzymaniu, zapewniając bardziej naturalny sposób na osiągnięcie efektu końcowego. Jednym z głównych punktów jest to, że SQL najlepiej sprawdza się w działaniach opartych na zbiorach/bez pętli/bez manipulacji ciągami.

Nie oznacza to, że będzie działać świetnie z dużym zestawem przekazywanych wartości. Ale przy mniejszych zestawach (do ~1000) powinno być dobrze.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak porównać wartości Null z kolumny bazy danych

  2. Serwer a źródło danych w ciągu połączenia

  3. SQL między nie włącznie

  4. Jak połączyć Cakephp 1.3 z MS SQLServer 2008?

  5. Parametry wyjściowe procedury składowanej w programie SQL Server Profiler