Manera eficiente de almacenar artículos reorderables en una base de datos [cerrado]

Así que tengo una tabla de favoritos de los usuarios. Hay unos cuantos millones de filas de ellos.

Actualmente, solo tienen tres columnas:id(pk)userId ysomeFkRef. Hay un índice enuserId para permitirme seleccionar los favoritos de un usuario rápidamente.

Actualmente estos están ordenados porid que es efectivamente sólo el orden de inserción. Nos gustaría ofrecer al usuario la oportunidad de reordenar sus favoritos, probablemente a través de algún tipo de interacción de arrastrar y soltar.

Mi primer (y sospecho ingenuo) enfoque a esto sería simplemente agregar unorder columna y un índice compuesto sobreuserId,order. Sin embargo, al reflexionar, cuando el usuario mueve su artículo una cierta distancia sobre la lista, todas las filas intermedias entre la posición inicial y la posición final del elemento necesitarán suorder Columna recalculada y por lo tanto, el índice también.

Esto es (lo más probable) malo.

Antes de pasar las edades tratando de cuantificar exactamente qué tan malo, me pregunto si hay una mejor representación basada en tablas que sea más barata de manipular con los tipos de operaciones que describo anteriormente.

Respuestas a la pregunta(3)

Su respuesta a la pregunta