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

MS SQL Server - Kiedy jest dobry CURSOR?

Zwykle należy ich unikać, ale ta funkcja istnieje z jakiegoś powodu i są czasy, aby z nich korzystać. Powiedziałbym, że ponad 90% kursorów, które widziałem, nie jest potrzebnych. Jeśli używasz ich do operacji CRUD, prawie zawsze można je przerobić w sposób oparty na zestawach. Często widziałem, jak ludzie używają do tego kursorów, ponieważ nie wiedzą, jak używać złączeń w aktualizacji lub usuwaniu, albo że mogą użyć instrukcji select zamiast klauzuli wartości we wstawce. Kolejne niepotrzebne zastosowanie, gdy ludzie myślą, że potrzebują ich do nieco bardziej złożonego przetwarzania, które w rzeczywistości można łatwo obsłużyć za pomocą instrukcji sprawy.

Kursory są czasami szybsze przy obliczaniu czegoś takiego jak suma bieżąca.

Kursory są również przydatne przy wielokrotnym wykonywaniu przechowywanej procedury, która jest skonfigurowana do obsługi tylko jednej wartości wejściowej na raz. Nie używam tej funkcji do uruchamiania procesów przechowywanych przez użytkownika (chyba że wiem, że trafię na bardzo mały zestaw danych), ale jest to bardzo przydatne dla administratorów baz danych, gdy muszą uruchamiać procedury systemowe na wielu tabelach.

Jeśli tworzysz e-maile w SQL (nie jest to najlepsze miejsce do tego, ale w niektórych systemach właśnie tam to robią) i nie chcesz, aby cała publiczność wiadomości e-mail widziała inne osoby z listy lub chcesz je spersonalizować e-mail z informacjami o adresacie, kursory są do zrobienia.

Kursory lub pętle mogą być również używane do przetwarzania partii rekordów, jeśli całe wstawianie/aktualizowanie/usuwanie oparte na zestawie zajmie zbyt dużo czasu i zablokuje tabele. Jest to rodzaj hybrydy między kursorami a rozwiązaniem opartym na zestawie i często jest najlepszym rozwiązaniem w przypadku dużych zmian w systemach produkcyjnych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy mogę oddzielić przecinkami wiele wierszy w jednej kolumnie?

  2. Konwertuj bazę danych .sdf na bazę danych .mdf

  3. Zachowanie ORDER BY w SELECT INTO

  4. Grupuj i rejestruj wartości dla każdego rekordu w SQL

  5. Powolne uruchamianie usług SQL Reporting Services 2008 w trybie natywnym