Datenbank der Effizienz - Tabelle pro user und Tabelle der Benutzer
Für eine website mit Benutzer. Jeder Benutzer mit der Fähigkeit zu erstellen, jede Menge, wir nennen es "posts":
Effizienz-klug - ist es besser, erstellen Sie eine Tabelle für alle Beiträge, speichern die Benutzer-id des Benutzers erstellt, der post, für jede post - ODER die Erstellung eines anderen separaten Tabelle für jeden Benutzer und setzen dort nur die Beiträge erstellt, die von diesem Benutzer?
- Suche diese Seite mit den Bedingungen
[database] "table for each"
für eine lange Liste von verschiedenen takes auf diese Fragen. - wenn das Problem daran ist, die Beiträge für einen bestimmten Nutzer schnell, einen index auf
posts(user_id)
oder ähnliches. wenn Sie ein schema und einige Beispiel-Abfragen, die Sie ausführen müssen, um schnell, es wäre besser, uns zu sagen, dass schema und Abfragen, und Fragen uns, was sollten die Indizes vorhanden sind.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sich die Datenbankstruktur nicht ändern sollte, wenn Sie weitere Daten hinzufügen, so dass die Daten der Nutzer sollte auf jeden Fall in einer Tabelle.
Auch:
Mehrere Tabellen bedeutet, dass Sie zum erstellen von Abfragen dynamisch.
Den zwischengespeicherten Abfrageplan für eine Tabelle werden nicht für andere Tabellen.
Dass eine Menge von Daten in einer Tabelle und nicht die Leistung beeinflussen viel, aber mit einer Menge von Tabellen funktioniert.
Wenn Sie möchten, fügen Sie einen index auf die Tabelle, um Anfragen schneller zu machen, es ist viel einfacher zu tun auf einer einzelnen Tabelle.
Sowie eine Antwort auf die konkrete Frage: In Bezug auf die Effizienz von Abfragen, es wird immer besser, kleine Tische, daher ist eine Tabelle pro user ist wahrscheinlich die effizienteste sein.
Jedoch, es sei denn, Sie haben viel von Beiträgen und Nutzern, das ist wahrscheinlich nicht egal. Selbst mit Millionen von Zeilen, erhalten Sie eine gute performance mit einem gut Platzierten index.
Ich würde dringend raten gegen den Tabelle-pro-user-Strategie, weil es fügt eine Menge von Komplexität auf Ihre Lösung. Wie würden Sie die Abfrage, wenn Sie brauchen, um zu finden, sagen die user, die gepostet haben, auf ein Thema innerhalb des Jahres ?
Optimieren, wenn Sie Sie benötigen. Nicht, weil Sie denken/Angst, etwas langsam. (Und selbst wenn Sie brauchen, um zu optimieren, gibt es einfachere Möglichkeiten als eine Tabelle pro Benutzer)
Schemas mit einer unterschiedlichen Anzahl von Tabellen sind im Allgemeinen schlecht. Verwenden Sie eine einzelne Tabelle für Ihre Beiträge.
Wenn die Leistung ein Problem darstellt, sollten Sie lernen, über eine Datenbank-Indizes. Während Indizes ist nicht Teil des SQL-Standards, fast alle Datenbanken unterstützen und Ihnen zu helfen, die Leistung zu verbessern.
Empfehle ich, dass Sie erstellen eine einzige Tabelle für alle Beiträge der Benutzer und fügen Sie einen index in diese Tabelle, um die performance zu verbessern suchen. Zum Beispiel können Sie fügen Sie einen index auf die
user
Spalte, so dass Sie schnell finden, alle Beiträge eines bestimmten Benutzers. Möglicherweise möchten Sie auch zu erwägen, das hinzufügen weiterer Indizes, abhängig von der Anwendung Anforderungen.Deinen ersten Vorschlag mit einem einzigen
user
- und ein Einzelzimmerpost
Tabelle ist der standard-Ansatz zu übernehmen.Momentan Beiträge möglicherweise die einzige Benutzer-spezifische Funktion auf Ihre Website, aber stellen Sie sich vor, dass es vielleicht zum wachsen brauchen, in Zukunft auf die Unterstützung von Benutzern mit Nachrichten, Einstellungen, etc. Jetzt ist Ihre separate Tabelle-pro-user-Ansatz führt zu einer explosion in der Anzahl der Tabellen, die Sie brauchen, zu erstellen.