Bonjour,
J'ai une table de 43 champs dont l'un d'eux met en place un niveau hiérarchique.

Est-il mieux de faire une vue hiérarchique de base avec la requête suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
WITH RecursiveQuery AS (
	SELECT	MonID, MonIDHierarchique, 0 Version
	  FROM	MaTableHierarchique
	UNION ALL
	SELECT	MTH.MonID, MTH.MonIDHerarchique, RQ.Version + 1
	  FROM	MaTableHirarchique MTH
			INNER JOIN RecursiveQuery RQ ON RQ.MonID = MTH.MonIDHerarchique)
SELECT	MonID, MonIDHerarchique, Version
  FROM	RecursiveQuery
Suivi d'une autre requête/vue pour avoir les autres infos :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT	MonID, MonIDHerarchique, Version, Champ1, Champ2, ...
  FROM	MaVueHierarchique MVH
		INNER JOIN MaTableHierarchique MTH ON MVH.MonID = MTH.MonID
Ou bien tout mettre directement dans la vue hiérarchique comme ci-dessous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
WITH RecursiveQuery AS (
	SELECT	MonID, MonIDHierarchique, 0 Version, Champ1, Champ2, ...
	  FROM	MaTableHierarchique
	UNION ALL
	SELECT	MTH.MonID, MTH.MonIDHerarchique, RQ.Version + 1, MTH.Champ1, MTH.Champ2, ...
	  FROM	MaTableHirarchique MTH
			INNER JOIN RecursiveQuery RQ ON RQ.MonID = MTH.MonIDHerarchique)
SELECT	MonID, MonIDHerarchique, Version, Champ1, Champ2, ...
  FROM	RecursiveQuery
La première organisation me parait plus légère à écrire mais plus lourde en ressources car ça demande de refaire un lien.
La seconde organisation me parait un peu plus lourde à écrire mais plus rapide car un lien de moins que la première. Par contre toutes les données sont trimballées et ça c'est peut-être plus lourd.

Et justement je ne sais pas laquelle de ces 2 organisations est meilleure à utiliser...

Si vous avez des infos sur les avantages ou inconvénient de l'une ou de l'autre de ces organisations, je suis preneur pour argumenter et arbitrer mon choix...

Merci