Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment stocker les commandes ?

Vous pouvez conserver les commandes sous forme de littéraux et utiliser le tri lexical :

1. A
2. Z

Ajouter une tâche :

1. A
3. L
2. Z

Ajouter plus :

1. A
4. B
3. L
2. Z

Déplacez 2 entre 1 et 4 :

1. A
2. AL
4. B
3. L

etc.

Vous mettez à jour un seul enregistrement à la fois :prenez simplement une lettre moyenne entre les premières qui diffèrent :si vous mettez entre A et C , vous prenez B , si vous mettez entre ALGJ et ALILFG , vous prenez ALH .

La lettre à côté de l'existant compte comme existante concaténée avec celle à côté de Z . C'est à dire. si vous avez besoin de mettre entre ABHDFG et ACSD F, vous le comptez entre ABH et AB(Z+) , et écrivez AB(letter 35/2) , c'est-à-dire ABP .

Si vous manquez de longueur de chaîne, vous pouvez toujours effectuer une nouvelle commande complète.

Mise à jour :

Vous pouvez également conserver vos données sous forme de liste liée.

Voir l'article de mon blog sur la façon de le faire dans MySQL :

En un mot :

/* This just returns all records in no particular order */

SELECT  *
FROM    t_list

id      parent
------- --------
1       0
2       3
3       4
4       1

/* This returns all records in intended order */

SELECT  @r AS _current,
        @r := (
        SELECT  id
        FROM    t_list
        WHERE   parent = _current
        )
FROM    (
        SELECT  @r := 0
        ) vars,
        t_list

_current id
-------  --------
0        1
1        4
4        3
3        2

Lors du déplacement des éléments, vous devrez mettre à jour au plus 4 lignes.

Cela semble être le moyen le plus efficace de conserver une liste ordonnée fréquemment mise à jour.