Effiziente Möglichkeit, um nachbestellbare Artikel in einer Datenbank zu speichern [geschlossen]

Ich habe also eine Tabelle mit Benutzerfavoriten. Es gibt ein paar Millionen Zeilen.

Derzeit haben sie nur drei Spalten:id(pk),userId undsomeFkRef. Es gibt einen IndexuserId damit ich die Favoriten eines Benutzers schnell auswählen kann.

Derzeit werden diese von bestelltid das ist effektiv nur die Reihenfolge der Einfügung. Wir möchten dem Benutzer die Möglichkeit bieten, seine Favoriten nachzubestellen, wahrscheinlich durch eine Art Drag & Drop-Interaktion.

Meine erste (und ich vermute naive) Herangehensweise wäre, einfach eine hinzuzufügenorder Spalte und ein zusammengesetzter Index überuserId,order. Wenn der Benutzer jedoch nach dem Nachdenken seinen Artikel um einen bestimmten Abstand über die Liste bewegt, benötigen alle Zwischenzeilen zwischen der Startposition und der Endposition des Artikels ihreorder Spalte neu berechnet und damit auch der Index.

Das ist (höchstwahrscheinlich) schlecht.

Bevor ich ewig versuche, genau zu quantifizieren, wie schlimm das ist, frage ich mich, ob es eine bessere tabellenbasierte Darstellung gibt, die mit den oben beschriebenen Operationen billiger zu manipulieren ist.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage