私は何か他のものを探してこれに出くわし、何かを指摘したかった:
注文をデータと同じテーブルのフィールドに格納すると、データの整合性が失われます。または、インデックスを作成すると、競合が発生した場合に非常に複雑になります。言い換えれば、バグ (またはその他の何か) によって 3 が 2 つ出たり、4 が欠けたり、その他の奇妙なことが起こりやすいということです。私は、アプリケーションにとって重要な手動の並べ替え順序を使用してプロジェクトを継承しました (他にも問題がありました)。これは、200 ~ 300 個のアイテムで常に問題でした。
手動の並べ替え順序を処理する正しい方法は、別のテーブルを用意してそれを管理し、結合で並べ替えることです。このようにして、Order テーブルには、PK (注文番号) と、並べ替えたいアイテムの ID への外部キーの関係だけを持つ、ちょうど 10 個のエントリが含まれます。削除されたアイテムには、もはや参照がありません。
現在行っている方法と同様に削除の並べ替えを続行できます。すべてのアイテムを反復して書き直すのではなく、Order モデルの FK をリストに更新するだけです。はるかに効率的です。
これにより、手動でソートされた何百万ものアイテムに簡単にスケールアップできます。しかし、自動インクリメントされた int を使用するのではなく、配置したい 2 つのアイテムの間にランダムな順序 ID を各アイテムに与え、十分なスペースを確保する必要があります (数十万で十分です)。それらを並べ替えます。
ここには 10 行しかないとおっしゃいましたが、アーキテクチャを最初から適切にスケーリングできるように設計することは、練習として、今後の頭痛の種から解放されます。もう時間はかかりません。