Hallo Leute
Ich hab mal eine grundsätzliche Frage an die Leute die sich damit auskennen.
Ich sitz gerade an einer Datenbank die ziemlich viele Daten über verschiedene User abbildet.
Nun hab ich das Problem, wie bekomm ich die Daten so in die Datenbank das die Zugriffe relativ schnell bleiben. Ich muß auf fast alle Daten die dort drin sind suchen können.
Mein erstes Beispiel „alle relevanten Daten in eine Tabelle“
Heißt User, Passwort, Email, Land, Stadt, Plz, Bundesland, Beschreibungen und so weiter in eine Tabelle
Vorteil ich hab halt nur einen Select und hab sofort alle relevanten Daten zum user, email oder nach was ich gerade suche.
Mein zweites Beispiel „trenne alle Daten die updates brauchen von denen die so bleiben“
Also eine eigene Tabelle für Name, Geburtstag und eine Für die restlichen Daten.
VOrteil ist halt das man recht schnell nach dem Namen suchen kann oder nach dem Geburtstag, bzw nach den anderen Daten etwas langsamer aber dann muß man halt in der zweiten Tabelle die Restlichen Daten herraussuchen.
Mein drittes Beispiel „Trag alles in zwei Tabellen“
-
Tabelle:
id, user_id, name, passwort -
Tabelle
id, user_id, name, value
die erste Tabelle wird jetzt gefüllt mit den usern und die zweite enthält dann die daten so
id=1
user_id=1
name=email
value=[email protected]
id=2
user_id=2
name=geburtstag
value=1.1.1970
Ja ich weiß das man dann var_char nehmen müsste für alles und das das nicht unbedingt gut ist. Aber was wäre wenn man die Tabellen dann noch einmal trennt … typ-spezifisch. Also eine Tabelle mit bool werten, eine mit int werten und so weiter.
Ich benutze MySQL. Es sind ungefähr für jeden User 100 Daten die ich speichern muß. Diese Daten sind alle zur UserID hin abhängig (für die die Normalisierung anbringen).
Ich hoffe es ist klar geworden was ich fragen will. Hab schon viel gelesen und auch schon viel gesehen und auch selber ausprobiert. Alle 3 Varianten mit 1 Mio Datensätze haben nur minimale Abweichungen in der Geschwindigkeit gebracht wobei die Tabelle wo alles in einer steht immer allein war. Allerdings waren da auch alle Spalten ausgefüllt. Heißt für jeden User 100 Daten. Wenn aber nun mal nur jeder 2. alle 100 ausfüllt und die anderen nur 10 haben wir ja schon 45% weniger daten. Bei der großen Tabelle müssten trotzdem alle Spalten in der Tabelle stehen wärend die letzte zum Beispiel nur die Daten speichern würde die auch eingegeben werden.
Naja ich danke jedem der bis hier her schon mal gelesen hat
Gruß Lamer