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

Wstaw zaktualizowaną procedurę przechowywaną na serwerze SQL

Twoje założenie jest słuszne, jest to optymalny sposób na zrobienie tego i nazywa się to upsert/merge.

Znaczenie UPSERT - z sqlservercentral.com:

Dla każdej aktualizacji w wyżej wymienionym przypadku usuwamy jeden dodatkowy odczyt z tabeli, jeśli użyjemy UPSERT zamiast EXISTS. Niestety w przypadku Insert zarówno metody UPSERT, jak i IF EXISTS używają tej samej liczby odczytów tabeli. Dlatego sprawdzanie istnienia powinno być tylko należy to zrobić, gdy istnieje bardzo ważny powód, aby uzasadnić dodatkowe I/O. Zoptymalizowanym sposobem robienia rzeczy jest upewnienie się, że masz mało odczytów w bazie danych.

Najlepszą strategią jest próba aktualizacji. Jeśli aktualizacja nie ma wpływu na żadne wiersze, wstawiaj. W większości przypadków wiersz już istnieje i wymagane będzie tylko jedno wejście/wyjście.

Edytuj :Zapoznaj się z tą odpowiedzią i powiązanym postem na blogu, aby dowiedzieć się o problemach z tym wzorcem i jak zapewnić jego bezpieczeństwo.



  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 wygenerować zakres liczb między dwiema liczbami?

  2. Jak sprawdzić, czy baza danych istnieje w SQL Server?

  3. Zwróć bieżącą nazwę logowania w SQL Server (T-SQL)

  4. Jaki jest odpowiednik funkcji IsNull() w programie SQL Server w Oracle?

  5. DBA — jak zabić wszystkie procesy bazy danych na serwerze SQL?