Was ist perfomanter?

daddz

Mitglied
Hallo,

ich stehe vor der Frage welche der Lösungen am perfomantesten ist.
Es geht um ein Adressbuch, das mehrere Benutzer hat die jeweils ein "eigenens" Adressbuch haben.
Nun frag ich mich wie ich das am Besten in die MySQL-DB speichere.

Lösung 1:
Für jeden User wird eine neue Tabelle erstellt wo dann seine Adressbuch-Einträge sind.

Lösung 2:
Alles wird in eine Tabelle gespeichert und mit der User-ID versehen.

Ich hoffe ihr könnt mir bei diesem kleinen Problem helfen.

greetz
daddz
 
Ich vermute, dass die erste Variante minimal performanter ist, wenn wenn ansonsten keine relevanten Verknüpfungen zwischen den Usern oder den Adressen bestehen.
Allerdings ist die zweite Variante IMHO einfacher zu verwalten und vor allem nach Konzept relationaler Datenbanken richtiger.

Genaue Aufschlüsse über Geschwindigkeitsvorteile der einen oder anderen Variante und deren Relevanz gibt aber nur ein Performancetest in realistischer Umgebung.

Um wie viele Datensätze geht es eigentlich?

Gruß hpvw
 
Von der Datenbankmodellierung her sinnvoller ist sicherlich Lösung 2. Allgemein sollten während der „Laufzeit“ einer Datenbank keine Tabellen hinzugefügt (oder gelöscht) werden (es sei denn temporäre Tabellen).

Wie es mit der Performanz aussieht, kann ich dir leider nicht sagen. Kommt wohl auf den konkreten Anwendungsfall an.

PS: Da war wohl jemand schneller :)
 
Danke für die schnellen und informativen Antworten.

Also wieviele Datensätze es sind kann ich nicht genau sagen...ich geh mal von ca. 500 aus könnten aber auch weitaus mehr sein. D.h. ich hätte bei Lösung 1 ca. 500 Tabellen und das finde ich eigentlich nicht so toll.

Ich denke ich werde mich mit Lösung 2 begügnen.

greetz
daddz
 
Zuletzt bearbeitet:
daddz hat gesagt.:
Danke für die schnellen und informativen Antworten.

Also wieviele Datensätze es sind kann ich nicht genau sagen...ich geh mal von ca. 500 aus könnten aber auch weitaus mehr sein. D.h. ich hätte bei Lösung 2 ca. 500 Tabellen und das finde ich eigentlich nicht so toll.

Ich denke ich werde mich mit Lösung 1 begügnen.

greetz
daddz
Ich glaube, jetzt bist Du mit Deiner eigenen Nummerierung durcheinander gekommen.

500 Tabellen würde ja bedeuten, dass Du 500 User hast. Wenn jeder von denen auch noch 500 Adressen speichern will, hättest Du wahlweise eine Tabelle mit 250000 Datensätzen oder 500 Tabellen mit je 500 Datensätzen. Wenn Du bei Verwendung von einer Tabelle einen Index auf die UserID legst, sollte der Perfermanceunterschied nicht relevant sein.

Da würde ich Dir dringend zu einer normalisierten Struktur raten, die sich nicht mehr ändert, also die in Deinem ersten Post mit Lösung 2 benannte Variante.

Gruß hpvw
 
Ups...ich meinte natürlich Lösung 2! :suspekt:
Danke für den Hinweis! Ich besser das gleich mal aus.

greetz
daddz
 
Zurück