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

Uložená procedura T-SQL, která přijímá více hodnot ID

Erland Sommarskog udržuje směrodatnou odpověď na tuto otázku již 16 let:Pole a seznamy na serveru SQL Server .

Existuje alespoň tucet způsobů, jak předat pole nebo seznam dotazu; každý má své vlastní jedinečné klady a zápory.

  • Parametry s hodnotou tabulky. Pouze SQL Server 2008 a vyšší a pravděpodobně nejblíže univerzálnímu „nejlepšímu“ přístupu.
  • Iterativní metoda. Protáhněte ohraničený řetězec a protáhněte jej.
  • Pomocí CLR. SQL Server 2005 a vyšší pouze z jazyků .NET.
  • XML. Velmi dobré pro vkládání mnoha řádků; může být pro SELECT přehnané.
  • Tabulka čísel. Vyšší výkon/složitost než jednoduchá iterativní metoda.
  • Prvky s pevnou délkou. Pevná délka zvyšuje rychlost oproti oddělovacímu řetězci
  • Funkce čísel. Variace tabulky čísel a pevná délka, kde jsou čísla generována ve funkci, nikoli převzata z tabulky.
  • Rekurzivní společný tabulkový výraz (CTE). SQL Server 2005 a vyšší, stále není příliš složitý a má vyšší výkon než iterační metoda.
  • Dynamické SQL. Může být pomalý a má bezpečnostní důsledky.
  • Předání seznamu jako mnoho parametrů. Zdlouhavé a náchylné k chybám, ale jednoduché.
  • Opravdu pomalé metody. Metody, které používají charindex, patindex nebo LIKE.

Opravdu nemohu dostatečně doporučit, abych si přečetl článek, abych se dozvěděl o kompromisech mezi všemi těmito možnostmi.



  1. Jak spravovat databázi pomocí Admineru

  2. Dynamicky generujte sloupce v PostgreSQL

  3. PostgreSQL - Přidejte klíč ke každému objektu pole JSONB

  4. Optimalizujte skupinový maximální dotaz