3 Stimmen

Entscheiden, ob ich einen Tisch teilen soll

Ich baue eine mehrsprachige Website auf

Ich habe eine Tabelle mit Beschreibungen, die die Beschreibung jedes Produkts enthält, und eine Spalte, die die Sprache angibt. Sie enthält also eine Zeile für jede Sprachbeschreibung

Mein Problem ist nun, dass ich verschiedene Arten von Produkten im System habe und die Beschreibung eines jeden Produkts über diese Tabelle lesen muss. Dies bedeutet eine Menge Verkehr zu dieser Tabelle

Ist es von Vorteil, mehrere Beschreibungstabellen zu erstellen, die bestimmten Produktgruppen gewidmet sind, und die Anzahl der Zugriffe auf diese eine Tabelle auf mehrere Tabellen zu verteilen?

Würde dies einen Leistungsgewinn für Microsoft SQL bedeuten?

7voto

Adam Robinson Punkte 176996

Praktisch gesehen, nein. Wenn Ihre Tabelle ordnungsgemäß indiziert ist, sollten Sie keinen Unterschied feststellen.

Optimieren Sie Ihre Datenbankstruktur nicht voreilig.

4voto

cletus Punkte 596503

Von wie vielen Produkten sprechen Sie? Denn wenn es weniger als 10 Millionen sind, brauchen Sie sich gar nicht erst die Mühe zu machen, sie auf diese Weise zu optimieren.

Was Sie meinen, ist im Grunde ein Partitionierungsschema. Dies wird für sehr große Datensätze verwendet. Weniger als 10 Millionen kommen aber nicht in Frage, es sei denn, jedes Element ist riesig.

Wenn Sie viel lesen und wenig schreiben, bringt Ihnen diese Art der Partitionierung nichts.

Optimieren Sie ein Problem nicht, bevor Sie ein Problem haben.

0voto

Reed Copsey Punkte 536986

Ich empfehle, diese beiden Dinge zu überprüfen:

  • Ist Ihre Tabelle richtig indiziert? Wenn nicht, indizieren Sie sie.
  • Gibt es hier derzeit ein Leistungsproblem (vorausgesetzt, die Indizierung ist korrekt)?

Wenn Sie nicht gerade ein Leistungsproblem haben, würde ich mir nicht die Mühe machen, Ihre Struktur zu ändern. Dies sollte für fast jede Datenbankgröße völlig in Ordnung sein. Bei einer großen Anzahl von Elementen kann die Partitionierung der Beschreibungstabelle vielleicht helfen, aber wenn sie richtig indiziert ist, bezweifle ich, dass dies überhaupt eine Rolle spielt.

0voto

DanDan Punkte 10195

Bei der Normalisierung von Tabellen kommt es immer zu einem leichten Leistungsverlust. Sie werden ihn aber wahrscheinlich nicht bemerken, wenn Sie Ihre Tabellen korrekt indizieren. Sollte es doch einmal zu einem Problem kommen, ist es einfacher, eine Tabelle zu denormalisieren, als sie zu normalisieren.

Ich würde daher empfehlen, getrennte Tabellen zu verwenden.

0voto

3Dave Punkte 27742

Einverstanden - ich ziehe es vor, Probleme zu lösen, die tatsächlich Probleme sind.

Wenn Ihre Anwendung ausreichend modular ist und Ihre Datenzugriffsschicht korrekt strukturiert ist, sollte es kein Problem sein, die Dinge später aufzuteilen. Wenn Sie gespeicherte Prozeduren, Ansichten usw. verwenden, um die zugrundeliegende Tabellenstruktur von der Anwendung zu abstrahieren, sollte die Durchführung dieser Art von Optimierung zu einem späteren Zeitpunkt nur minimale Auswirkungen auf Ihren Quellcode haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X