Du kan hålla ordningar som bokstavliga ord och använda lexikal sortering:
1. A
2. Z
Lägg till en uppgift:
1. A
3. L
2. Z
Lägg till fler:
1. A
4. B
3. L
2. Z
Flytta 2 mellan 1 och 4:
1. A
2. AL
4. B
3. L
etc.
Du uppdaterar bara en post åt gången:ta bara en genomsnittlig bokstav mellan de första som skiljer sig:om du sätter mellan A och C , tar du B , om du lägger mellan ALGJ och ALILFG , tar du ALH .
Bokstaven bredvid befintliga räknas som befintlig sammanlänkade med den bredvid Z . Dvs. om du behöver lägga mellan ABHDFG och ACSD F, du räknar det som mellan ABH och AB(Z+) , och skriv AB(letter 35/2) , det vill säga ABP .
Om du får slut på stränglängd kan du alltid utföra en fullständig omordning.
Uppdatering:
Du kan också behålla din data som en länkad lista.
Se artikeln i min blogg om hur du gör det i MySQL :
I ett nötskal:
/* 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
När du flyttar objekten behöver du som mest uppdatera 4 rader.
Detta verkar vara det mest effektiva sättet att hålla en ordnad lista som uppdateras ofta.