Müssen Sie die Tabelle nach einer guten Normalisierung noch indizieren? Wie wird sich das auf die Leistung auswirken? Beeinträchtigt es die Leistung nach einer guten Normalisierung in irgendeiner Weise?
Welche Spalten werden normalerweise indexiert, wenn Sie bereits den Primärschlüssel und den Fremdschlüssel haben?
Es scheint, als wäre es bereits effektiv, eine Datenbank zu normalisieren. Möglicherweise habe ich jedoch übersprungen, wie sich die Indizierung auf die Datenbank auswirkt. Ist dies nur wirksam, wenn Abfragen verwendet werden? Wie funktioniert das und wie verbessert man eine Datenbank?
database
sql
indexing
normalization
Franz Noel
quelle
quelle
Antworten:
Ja. Möglicherweise müssen Sie Ihren Indizes mehr Aufmerksamkeit schenken. Bei der Normalisierung geht es um eine optimale Speicherung . Dies steht häufig im Widerspruch zur Abrufgeschwindigkeit , da komplexere Abfragen mit komplizierten Verknüpfungen verwendet werden. Manchmal werden Datenbanken, für die schnelle Abrufgeschwindigkeiten erforderlich sind, de-normalisiert oder ihre Daten in etwas weniger normalisierten Strukturen angeordnet, um den Abruf zu vereinfachen.
quelle
Ich denke, Sie haben falsch verstanden, was die Indizierung für die Datenbankleistung bewirkt.
Ein Index hilft der Datenbank beim Auffinden von Zeilen. Indizes sind spezialisierte Datenstrukturen, die im Austausch für zusätzlichen Speicherplatz und eine gewisse Leistung beim Einfügen und Aktualisieren dazu beitragen, dass das Datenbankmodul die passenden Zeilen findet.
Da sie zusätzlichen Speicherplatz beanspruchen und ein Minimum an Leistung kosten, um sie auf dem neuesten Stand zu halten, müssen Sie als Datenbankdesigner Indizes explizit erstellen, die Ihren Anwendungs- und Abfragemustern entsprechen.
Indizes sind orthogonal zur Datenbanknormalisierung.
quelle
Ja, nach der Normalisierung müssen Sie noch indizieren.
Die Tabellen, mit denen Sie arbeiten, profitieren genauso wie die Tabellen, die Sie vor der Normalisierung hatten. Eigentlich sind sie für sich genommen genau dasselbe: Tische.
Eine Sache, die Sie beachten müssen, sind Indizes, mit denen Sie sich schneller in Ihren Daten zurechtfinden. Das Normalisieren eines Datenbankentwurfs ist immer gut, aber manchmal müssen Sie die Implementierung aus Gründen der Leistung denormalisieren. Dies ist jedoch nur von Fall zu Fall möglich.
quelle
Ja.
Indizes sind eine Methode, um die Suche nach Daten zu beschleunigen. Bei einigen Abfragen handelt es sich um Primärschlüssel, die normalerweise implizit vom Datenbankmodul indiziert werden. Bei anderen Abfragen werden jedoch wahrscheinlich andere Spalten verwendet. Einige Abfragen suchen häufig nach Spalten, die nicht einmal eindeutig sind und daher nach einer Normalisierung nicht zu Primärschlüsseln werden können. Sie müssen wahrscheinlich solche Spalten indizieren.
Es gibt nur einen Weg zu wissen, welche Indizes erstellt werden müssen. Nehmen Sie alle Abfragen in der Anwendung finden repräsentatives Beispiel Parameter für sie und haben die Datenbank - Engine ihre Abfragepläne zeigen (alle Datenbank - Engines haben
EXPLAIN
,EXPLAIN QUERY PLAN
oder ähnlichen Befehl, es heißt unterschiedlich in verschiedenen Motoren) und testen , wie lange sie dauern. Erstellen Sie dann Indizes, die die langsamen Indizes beschleunigen. Und vergessen Sie nicht, Indizes, die Sie versucht haben, aber nicht dazu beigetragen haben, Ressourcenverschwendung zu vermeiden, erneut zu löschen.quelle
Indizes werden im Allgemeinen in allen bis auf die kleinsten Tabellen benötigt. Ziemlich jeder Fremdschlüssel sollte indiziert werden und das Einrichten eines FK bedeutet nicht, dass Sie einen Index haben (zumindest in einigen Datenbanken, überprüfen Sie Ihre Datenbankdokumentation). Felder, die Sie häufig verknüpfen oder in denen Klauseln verwendet werden, sollten indiziert werden, wenn dies von Vorteil ist (Sie benötigen eine gewisse Variabilität der Daten, damit Boolesche Werte beispielsweise keinen Nutzen haben) und solche, in denen eine Indizierung möglich ist.
Jeder Index verlangsamt jedoch das Einfügen \ Aktualisieren \ Löschen, während die Auswahl beschleunigt wird. Wählen Sie Ihre Indizes daher sorgfältig aus.
Indizes sind für eine akzeptable Leistung in einer Datenbank von entscheidender Bedeutung.
quelle
Für eine dritte normale Form benötigen Sie auf jeden Fall Indizes für alle Primärschlüssel.
Ob Sie weitere Indizes benötigen, hängt davon ab, wie Ihre Datenbank verwendet wird. Wenn Sie beispielsweise regelmäßig nach Kunden in einer bestimmten Postleitzahl suchen, empfiehlt es sich möglicherweise, die Spalte zip_code in der Kundentabelle zu indizieren.
quelle