Maison >base de données >tutoriel mysql >Comment la recherche en profondeur de MySQL peut-elle récupérer efficacement tous les ancêtres d'un nœud dans une structure hiérarchique ?
Requêtes hiérarchiques dans MySQL : parcourir l'ascendance avec la recherche en profondeur
La détermination des relations d'ascendance au sein des données hiérarchiques est une tâche courante dans la gestion de bases de données. Dans MySQL, les requêtes hiérarchiques vous permettent de naviguer et de récupérer efficacement les données des structures imbriquées.
Supposons que vous ayez une table nommée « matable » avec deux colonnes, « a » et « b », représentant un parent-enfant hiérarchique. relation :
| a | b | ---------- | 1 | 2 | | 2 | 3 | | 3 | 4 | | 4 | 5 | | 3 | 6 | | 4 | 7 |
Considérons le scénario où vous souhaitez récupérer tous les ancêtres d'un nœud donné, par exemple trouver tous les parents, grands-parents, et ainsi de suite, du nœud 5.
Solution utilisant l'algorithme de recherche en profondeur :
MySQL fournit une solution de requête hiérarchique utilisant une recherche en profondeur d'abord (DFS ) approche. Voici une requête qui accomplit cela :
SELECT @id := ( SELECT senderid FROM mytable WHERE receiverid = @id ) AS person FROM ( SELECT @id := 5 ) vars STRAIGHT_JOIN mytable WHERE @id IS NOT NULL
Analyse :
En exécutant cette requête, vous récupérerez une liste d'ancêtres pour le nœud 5 : 4, 3, 2 et 1. Cette méthode parcourt efficacement la hiérarchie en utilisant une approche DFS, vous permettant de naviguez dans des structures parent-enfant complexes dans votre base de données MySQL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!