sql >> Databáze >  >> RDS >> Sqlserver

MS SQL Server - Kdy je dobrý KURZOR?

Normálně je třeba se jim vyhnout, ale tato funkce existuje z nějakého důvodu a je čas je použít. Řekl bych, že 90+% kurzorů, které jsem viděl, není potřeba. Pokud je používáte pro operace CRUD, lze to téměř vždy předělat způsobem založeným na množinách. Často jsem viděl, jak k tomu lidé používají kurzory, protože nevědí, jak používat spojení při aktualizaci nebo mazání, nebo že mohou použít příkaz select místo klauzule hodnot ve vložení. Další zbytečné použití, když si lidé myslí, že je potřebují pro trochu složitější zpracování, které by se ve skutečnosti dalo snadno zvládnout pomocí prohlášení o případu.

Kurzory jsou někdy rychlejší pro výpočet něčeho jako průběžný součet.

Kurzory jsou také užitečné pro vícenásobné provádění uloženého procesu, který je nastaven tak, aby zpracovával pouze jednu vstupní hodnotu najednou. Tuto funkci nepoužívám pro spouštění uživatelských procesů (pokud nevím, že zasáhnem velmi malou množinu dat), ale je velmi užitečná pro správce databází, když potřebují spouštět systémové procesy proti více tabulkám.

Pokud vytváříte e-maily v SQL (není to nejlepší místo k tomu, ale v některých systémech to dělají) a nechcete, aby celé publikum e-mailu vidělo ostatní lidi na seznamu, nebo si chcete každý přizpůsobit e-mail s informacemi o adresátovi, kurzory jsou správnou cestou.

Kurzory nebo smyčky lze použít také ke zpracování dávek záznamů, pokud celé vkládání/aktualizace/mazání na základě sady bude trvat příliš dlouho a zablokuje tabulky. Jedná se o jakýsi hybrid mezi kurzory a řešením založeným na množinách a často je to nejlepší řešení pro velké změny v produkčních systémech.



  1. Vlastní agregační funkce v PostgreSQL

  2. Rails multitenant architektura, rozsah přístupu pro více tenantů

  3. SQLiteReadOnlyDatabaseException:pokus o zápis databáze pouze pro čtení (kód 1032)

  4. jak vytisknout tabulku umístění za chodu z mysql tabulky fotbalových [fotbalových] výsledků?