Hallo, wann ist es sinnvoll statt leerer Felder eine Tabelle mit Fremdschlüssel anzulegen? Beispiel: Kontaktdaten. Nur jede 100. Zeile hat auch eine Telefonnummer. Ist es beispielsweise besser, eine Spalte zu haben die zu 99 % leere Zellen hat? Oder eine neue Tabelle, die jedes mal parallel abgefragt wird? Lässt sich hier eine ungefähre Grenze festlegen, ab der sich eine neue Tabelle rentiert (Performance/Speicherplatz)?. Vielen Dank
Eine allgemeine Regel kenne ich da nicht, aber z.B. kann eine Person 0, 1, 2 oder auch 100 Telefonnummern haben, schon deswegen würde ich da zu einer extra Tabelle greifen …
Andreas
ok, schlechtes Beispiel (: Aber es soll wirklich nur das Prinzip verdeutlichen.
Aus einem anderen Topic Leeren von Feldern sinnvoll? | SQL & Datenbank - Programmierung schlie�e ich, dass die Aufteilung in mehrere Tabellen deutlich Speicherplatz spart, da f�r NULL-Felder Platz reserviert wird. Die Performance w�rde verschlechter werden, da jetzt mehr Tabellen durchlaufen werden m�ssten. Also hinge der Entschluss, die Tabelle aufzuteilen von mehreren Faktoren ab: Wie viel Speicherplatz kann aufgewendet werden, wie viel Rechenleistung ist verf�gbar und wie hoch ist der Anteil der Abfragen, bei denen die Tabelle nicht durlaufen werden muss (z. B. Insert?), an den gesamten Abfragen. Bei der Speicherplatzeinsparung m�sste noch der zus�tzliche Bedarf f�r die Fremdschl�ssel einbezogen werden. Richtig?
Kommt drauf an, denn die Tabellen, die zu durchsuchen sind, sind kleiner. Das spart wieder I/O bzw. Platz in shared_buffers und/oder cache.
Also hinge der Entschluss, die Tabelle aufzuteilen von mehreren Faktoren ab: Wie viel Speicherplatz kann aufgewendet werden, wie viel Rechenleistung ist verf�gbar
Rechenleistung ist bei Datenbanken fast immer mehr verfügbar als I/O.
und wie hoch ist der Anteil der Abfragen, bei denen die Tabelle nicht durlaufen werden muss (z. B. Insert?), an den gesamten Abfragen. Bei der Speicherplatzeinsparung m�sste noch der zus�tzliche Bedarf f�r die Fremdschl�ssel einbezogen werden. Richtig?
Ja.
Andreas
Vielen Dank Andreas