Joins & Performance

Hallo zusammen!

Meine Frage hat keine wirkliche Brisanz, aber als ich gestern den Thread zur redundanzfreien Vornamenspeicherung gelesen habe, habe ich mir die Frage gestellt:

Liefert das Hardcore-Normalisieren, also wirklich Aufspaltung einer Tabelle in mehrere Minitabellen mit je 3 Spalten, also ID, Value und ForeignKey, spürbare Performancenachteile aufgrund des Joinens bei der Abfrage gegenüber der Speicherung in einer Tabelle?

Das wäre mir nämlich als Gegenargument zu dieser unsinnigen Normalisierung eingefallen, war mir aber, wie gesagt, nicht sicher.

Jedenfalls benötigt man (m.E.) mehr Indizes, die geladen und durchlaufen werden müssen. Aber wirkt sich das unangenehm auf die Performance auf?

Danke schon mal für die Diskussion :wink:

Gruß, Leebo

Moin, Leebo,

Liefert das Hardcore-Normalisieren, also wirklich
Aufspaltung einer Tabelle in mehrere Minitabellen mit je 3 …

normalisiert wird nicht um des Normalisierens willen, sondern um Redundanzfreiheit zu erzielen. Was auf den ersten Blick wie akademische Schnörkel aussieht, macht sich bei Erweiterungen und Änderungen hundertfach bezahlt.

Performance zeigt sich erst bei elend großen Datenmengen, wenn die Daten, die für den Join gebraucht werden, nicht mehr in den Hauptspeicher passen, wenn also geswapt werden muss. Grundsätzlich gilt: Ein fehlender Index ist wesentlich dramatischer als ein überflüssiger, weil der Optimizer Indizes nicht benutzen muss, er kann sie auch links liegen lassen. Benutzen kann er aber nur die, die auch angelegt sind.

Gruß Ralf

Hey Ralf,

Merci! Genau das wollte ich wissen.

Gruß, Leebo