いくつかの情報を維持し、順序を維持するために必要なデータベース テーブルがあります。基本的に、要素 1 ~ 5 がリストされていて、新しい要素を追加したい場合、既存の行の最後、5 の後、1 の前の始まり、または 3 の後などの途中のどこかに挿入できます。 . MySQL INSERT ステートメントを使用して、どの行の後にインデックスを挿入するかを指定する方法はありますか?
私はそうではないと思います。したがって、これを行うための私の戦略は、基本的に要素の順序を記録する別の列「order_number」を作成することです。たとえば、レコード テーブルにプライマリ キー (record_id) と order_number が並んでいる場合、次のようになります。
record_id order_number
1 1
2 2
3 3
4 4
5 5
行 3 の後にこの行に新しい要素を追加すると、最終テーブルは次のようになります。
record_id order_number
1 1
2 2
3 3
**6** **4** <------ added row
4 **5** <-- changed order_number
5 **6** <-- changed order_number
このような状況では、必要なデータを選択し、Order By order_number asc 句を指定するだけで、目的の順序を明確に達成できます。
ただし、ご覧のとおり、単純な挿入を行うには、その後に表示される 1 行おきに order_number を更新する必要があります。テーブルには、少なくとも大量の行 (大きさ 100,000) があることが予想され、1 回の挿入操作で 1 行おきに単純に更新する (したがって、テーブルをロックする) ことは、まったく現実的ではありません。
この場合、より推奨される戦略は何ですか?