Metode paling sederhana dari sudut pandang kode adalah dengan menggunakan gaya daftar tertaut, di mana Anda memiliki id elemen berikutnya, bukan nilai pesanan. Ini kurang berguna dalam daftar kecil, tetapi ketika Anda mulai memperbesar ukuran daftar, itu membuat pembaruan/pemindahan/penghapusan jauh lebih bersih dan mencegah kemungkinan memperbarui ribuan tupel untuk membuat 1 perubahan urutan.
++ Saya tidak memiliki contoh kode yang tepat, tetapi Anda akan membuat panggilan untuk semua daftar pengguna
SELECT Posts.id, Posts.next, Posts.content, User.firstPost FROM db.posts AS Posts
JOIN db.user as User ON Posts.ownerid = User.id
WHERE User.id='123' AND Posts.active = 1;
Ini akan mendapatkan semua posting dari satu pengguna, dan kemudian Anda akan memiliki bidang yang berisi id dari posting berikutnya. Untuk memulai, Anda memerlukan kunci untuk mengidentifikasi kiriman pertama (simpan id kiriman pertama di info pengguna). Setelah Anda menarik pos pertama, Anda mengambil nilai 'berikutnya', dan menggunakannya untuk mengidentifikasi pos berikutnya.
Ini tampaknya sedikit gila untuk daftar pendek, tetapi pikirkan tentang pengguna dengan 1000 posting. Jika mereka perlu menambahkan 1 posting di posisi ke-2. Dalam sistem pengurutan numerik tradisional, Anda sekarang perlu memperbarui 999 baris lainnya dengan pembaruan +1. Dengan solusi ini, jika Anda perlu memasukkan posting di posisi kedua, Anda cukup menanyakan posting pertama untuk mendapatkan nilai berikutnya. Setelah Anda memilikinya, Anda mengubahnya menjadi nilai pos kedua yang baru, dan menyetel nilai pos kedua berikutnya menjadi nilai yang semula dipegang oleh pos pertama.
[1st Post] --Next---> [2nd Post] --Next---> [3rd Post]
Setelah Sisipkan:
[1st Post] -. .--> [2nd Post] --Next---> [3rd Post]
`--Next--> [New 2nd Post]--`