Laden...

Hilfstabellen, Schlüssel und Indizes

Erstellt von Rahvin vor 12 Jahren Letzter Beitrag vor 12 Jahren 747 Views
R
Rahvin Themenstarter:in
156 Beiträge seit 2006
vor 12 Jahren
Hilfstabellen, Schlüssel und Indizes

verwendetes Datenbanksystem: MSSQL Server 2005

Hallo zusammen,

ich versuche gerade meine Datenbank mit dem MSSQL Server Management Studio Express zu optimieren und hätte dazu mal ein paar Fragen 😉.

Ich habe z.B. eine Tabelle Interpret und eine Tabelle Bild in einer m:n Beziehung. Daher hab ich eine Hilftabelle InterpretBild erstellt, welche nur die Primärschlüssel der beiden Tabelen Interpret und Bild enthält (als kombinierter Primärschlüssel).

Wenn ich mir die Tabelle InterpretBild im Management Studio anschaue, dann sehe ich unter Spalten meinen kombinierten Schlüssel InterpretID und Bild ID. Unter Schlüssel sehe ich drei Einträge PK_InterpretBild, FK_InterpretBild_Bild, FK_InterpretBild_Interpret. Wozu sind diese Einträge denn da?

Dann noch eine andere Frage. Macht es grundsätzlich Sinn einen Index auf eine Fremschlüsselspalte zu setzen. Gibt es eine Richtlinie ab welcher Menge Datensätze sich ein Index lohnt?

C
1.214 Beiträge seit 2006
vor 12 Jahren

"Wozu die Einträge da sind" siehst du ja, wenn du dir anschaust, wie die Schlüssel definiert sind. Ich nehme an, der PK_* ist der Primary Key für die Tabelle (also die beiden Spalten zusammen), und die FK_* eben die beiden Foreign Keys, die besagen, dass gültige Werte aus den beiden anderen Tabellen kommen müssen.

Einen Index sollte man setzen, wenn man die Spalte für Queries verwendet. Wenn du eine Fremdschlüsselspalte hast, sie aber nie in Querybedingungen verwendest, brauchst du auch keinen Index.
Wenn du keinen Index hast, ist die Suchkomplexität linear, mit einem Index in etwa logarithmisch (nur grob, wenn dus genau wissen willst, such nach B* Baum). Also, wenn du Tabellen mit 10 Einträgen hast, dann lohnt sich vielleicht kein Index, bei mehr wird aber sicher nicht schaden. Musst aber auch bedenken, dass ein Index das Einfügen langsamer macht.
So, das war jetzt natürlich sehr oberflächlich. u.U. ist das Optimieren der Datenbank eine Wissenschaft für sich. Da gibt es für Oracle z.B. ganze Bücher drüber. Die Datenbank führt Statistiken, man kann sich Ausführungspläne anschauen usw... Ich nehme jetzt aber nicht an, dass du jetzt Petabytegroße Datenbanken mit tausenden Tabellen optimieren willst.

R
Rahvin Themenstarter:in
156 Beiträge seit 2006
vor 12 Jahren

Danke für die fixe Antwort 😉.

Es handelt sich um eine überschaubare Datenbank für private Zwecke, also nix großes 😃.

Ich habe diese 3 Schlüssel noch nie bewusst gesehen. Ich arbeite ja in der Regel nur mit den Spaltennamen.

Ich werde dann mal die Indizes setzen und mich bei Gegenheit ein bißchen Tiefer in die Materie einarbeiten 😉.

476 Beiträge seit 2004
vor 12 Jahren

hallo Rahvin,

Ich werde dann mal die Indizes setzen und mich bei Gegenheit ein bißchen Tiefer in die Materie einarbeiten 😉.

hierfür bietet Red Gate derzeit auch ein kostenloses EBook an - SQL Server Execution Plans - das mag dir beim Einarbeiten in die Materie möglicherweise helfen.

-yellow

Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de

6.911 Beiträge seit 2009
vor 12 Jahren

Hallo,

SQL Indizierung und Tuning | Use The Index, Luke finde ich auch ganz gut geeignet für einen Einstieg in die Materie.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"