Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

MS SQL Server - Кога CURSOR е добър?

Обикновено те трябва да се избягват, но функцията е там с причина и има моменти да ги използвате. Бих казал, че 90+% от курсорите, които съм виждал, не са необходими. Ако ги използвате за CRUD операции, това почти винаги може да се преработи по начин, базиран на набор. Често съм виждал хора да използват курсори за това, защото не знаят как да използват обединения при актуализация или изтриване или че могат да използват оператор за избиране вместо клауза за стойности във вмъкване. Друга ненужна употреба, когато хората смятат, че се нуждаят от тях за малко по-сложна обработка, която всъщност може лесно да се обработи с изявление за случай.

Курсорите понякога са по-бързи за изчисляване на нещо като обща сума.

Курсорите също са удобни за множество изпълнения на съхранена процедура, която е настроена да обработва само една входна стойност наведнъж. Не използвам тази функция за стартиране на потребителски съхранени процедури (освен ако не знам, че ще достигна до много малък набор от данни), но е много удобна за администраторите на бази данни, когато трябва да стартират системни процедури срещу множество таблици.

Ако създавате имейли в SQl (не е най-доброто място за това, но в някои системи това е мястото, където го правят) и не искате цялата публика на имейла да вижда другите хора в списъка или искате да персонализирате всеки имейл с информация за адресата, курсорите са правилният начин.

Курсори или цикли могат да се използват и за обработка на партиди от записи, ако цялото базирано на набор вмъкване/актуализиране/изтриване ще отнеме твърде много време и ще заключи таблиците. Това е нещо като хибрид между курсорите и базираното на набор решение и често е най-доброто за големи промени в производствените системи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. не може да се актуализира профилна снимка с помощта на varbinary

  2. Обединете данни в две целеви таблици

  3. Как да добавя часове към текущата дата в SQL Server?

  4. SQL Server 2016:Импортиране на данни

  5. Максимална дължина на текстов тип данни на SQL Server =65 535?