Ist die Bestelltabelle basierend auf Benutzer-ID oder Bestell-ID in Tabellen unterteilt?
Ist die Bestelltabelle basierend auf Benutzer-ID oder Bestell-ID in Tabellen unterteilt?
Ein Benutzer kann mehrere Bestellungen haben, aufgeteilt nach Bestell-ID
uiserid und orderid haben eine Eins-zu-viele-Beziehung, daher ist der Primärschlüssel der Bestelltabelle orderid und der Fremdschlüssel userid
Der Vorteil der Verwendung von orderid zum Teilen von Tabellen besteht darin, dass die Größe jeder Tabelle nicht sehr unterschiedlich ist. Teilen Sie sie beispielsweise nach Zeit oder erstellen Sie eine neue Tabelle, wenn die Anzahl der Bestellungen einen bestimmten Wert erreicht Bei Abfragen wird die Benutzer-ID häufig als Suchbedingung verwendet, sodass viele Union-Operationen erforderlich sind.
Wenn die Benutzer-ID verwendet wird, ist die Situation nicht konstant und wächst mit der Zeit weiter. Der Vorteil besteht jedoch darin, dass die Abfrage eine einzelne Tabelle ist und sehr schnell erfolgt.
Also meine persönliche Meinung: Wenn nosql nicht zum Caching verwendet wird, wird empfohlen, die Benutzer-ID zum Teilen der Tabelle zu verwenden. Wenn Sie Leistung anstreben, können Sie Memcache zum Zwischenspeichern verwenden. Selbst wenn Sie orderid zum Teilen der Tabelle verwenden, wird der Cache direkt bei der zweiten Abfrage gelesen, sodass die Geschwindigkeit sehr hoch ist. Es ist benutzerfreundlich für Benutzer, die häufig Bestellungen überprüfen.
Trennen Sie Tabellen mithilfe der Bestell-ID
orderid ist einfach zu speichern und die Datenbanklast ist relativ konsistent. Die Datenaggregation ist jedoch schwieriger.
Benutzer-ID ist einfach zu aggregieren. Es kommt jedoch zu Problemen bei der Hotspot-Verteilung, was zu inkonsistenten Datentabellengrößen führt.
Entscheiden Sie selbst