sql >> Database teknologi >  >> RDS >> Mysql

mysql hierarkilager med store træer

Indlejrede sæt-designet er bestemt svært, når du skal lave hyppige opdateringer til træet. Du ender med at skulle omnummerere store dele af træet.

Et forslag til at afbøde dette er at bruge flydende kommatal i stedet for heltal. Hvis du indsætter en ny node i træet, er det relativt nemt at finde nogle FLOAT-numre mellem de indlejrede sæt-numre for forælderen til den nye node. Du kan i sidste ende komme til grænserne for præcisionen af ​​et flydende kommatal, men da dit træ ikke er særlig dybt, vil det ikke ske i lang tid.

En anden teknik, som jeg har skrevet om, kalder jeg Closure Table . Denne metode til lagring af hierarkier gør det meget nemmere at indsætte/opdatere/slette noder i et stort træ uden at skulle opdatere meget af dit træ. Og du kan stadig forespørge hele træet eller et hvilket som helst undertræ i en enkelt ikke-rekursiv SQL-forespørgsel.

For at læse mere om lukkebord, se:

Om din kommentar:

Adjacency List er enkel, har et minimum af redundans, og den understøtter FK-relationer, hvilket Nested Sets ikke gør. Adjacency List understøtter forespørgsler om et helt træ af vilkårlig dybde, hvis du bruger rekursive forespørgsler . Men MySQL understøtter ikke rekursive forespørgsler.

Hvis du kun har brug for at forespørge på umiddelbare forældre-barn-relationer (dvs. ét dybdeniveau), eller på anden måde kun forespørger efter træer med fast dybde, er Adjacency List fint.



  1. Sådan opdeles forespørgselsvindue i SQL Server Management Studio (SSMS) - SQL Server / TSQL selvstudie del 13

  2. Sådan bestiller du efter dato i T-SQL

  3. Sådan håndteres MySQL tidszone i script

  4. Sådan udføres PL SQL Block i Oracle