Introducere în recursivitate

Interogări ierarhice și recursive în SQL Server

Jasmin Ludolf

Content Developer

Ce este recursivitatea?

Recursivitatea reprezintă utilizarea unei proceduri, subrutine, funcții sau algoritm care se apelează pe sine de una sau mai multe ori până când o condiție specificată este îndeplinită

O imagine a proprietății de recursivitate de a se apela de mai multe ori.

Interogări ierarhice și recursive în SQL Server

Exemplu real de recursivitate

Arbore genealogic - Găsește toți tații din ultimele 5 generații

  • Reduceți problema la o problemă mai mică de același tip
    1. Problema întreagă: Găsiți toate cele cinci generații
    2. Problema mică: Găsiți tatăl, găsiți tatăl tatălui, ...
  • Limitați numărul de pași

Proprietatea de recursivitate a Turnului din Hanoi.

Interogări ierarhice și recursive în SQL Server

Fapte despre recursivitate

Avantaje:

  • Rezolvarea problemelor în mod recursiv
  • Ușor de citit și de urmărit
  • Recursivitatea poate fi limitată prin condiția de terminare

Dezavantaje:

  • Timp de execuție lent
Interogări ierarhice și recursive în SQL Server

Exemplu de recursivitate - Suma numerelor

Definiție matematică

Suma numerelor consecutive este definită recursiv astfel:

number = 1 
    for iteration = 1
number = number + (iteration - 1) 
    for iteration > 1

Suma numerelor până la 5 este:

1+2+3+4+5 = 15
Interogări ierarhice și recursive în SQL Server

Exemplu de recursivitate - Suma numerelor

  • Recursivitate în SQL: Expresie de tabel comună - CTE
WITH calculate_SumOfNumber AS
     ( -- Initial Query
    SELECT 1 AS iteration, 1 AS SumOfNumber

UNION ALL -- Recursive Part SELECT iteration + 1, SumOfNumber + (iteration + 1) FROM calculate_SumOfNumber
WHERE iteration < 6 )
SELECT SumOfNumber FROM calculate_SumOfNumber
Interogări ierarhice și recursive în SQL Server

Să exersăm!

Interogări ierarhice și recursive în SQL Server

Preparing Video For Download...