Bonjour,

J'utilise présentement un requête récursive qui me permet d'obtenir le chemin que peut prendre un élément de ma base de donnée.

Ceci fonctionne très bien lorsque j'ai peu d'éléments (environ 50) dans ma base de données, cependant, lorsque j'en ai plusieurs (environ 400), ma requête récursive ne semble pas être capable de se terminer...

Alors, je me demandais si c'était mieux d'avoir une requête récursive, ou s'il y avait un autre moyen qui serait plus approprié lorsque l'on a beaucoup de données.

De plus, j'aimerais savoir s'il est possible de voir se qu'effectue la requête à chaque tour.

Voici le code de ma requête récursive :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

WITH Peres (Pere, Chemin, Longueur) 
AS
(SELECT distinctcast(no_elem_fils aschar(5)),cast(@NoElement as varchar(MAX)),cast(0 asbigint)
FROM Preseances
where no_elem_fils = @NoElement

UNION ALL

SELECT cast(no_elem_pere aschar(5)), departure.Chemin + no_elem_pere,
Len(departure.Chemin + no_elem_pere)
FROM Preseances AS arrival
INNER JOIN Peres AS departure
ON departure.Pere = arrival.no_elem_fils
WHERE departure.Chemin NOT LIKE '%'+ arrival.no_elem_pere +'%'),
MChemin (Longueur)
 

AS 
(SELECT MAX(Longueur) FROM Peres)
J'avoue que je n'aime pas trop ma requête car ce que je fais, je crée une liste des éléments qui forme le chemin. Par la suite, j'obtiens sa longueur et divise par la longueur du champ (5). Ce qui me donne en fait le nombre d'éléments par lequel l'élément courant (@NoElement) a passé.

Merci,

Évans