phpbar.de logo

Mailinglisten-Archive

Re: primary key -> speed?
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: primary key -> speed?



Bruno Haller wrote:
> 
> Hallo,
> 
> mich hat gerade ein Bekannter ausgelacht, weil ich keinen "primary key" in
> meiner Tabelle habe.
> Er meinte mit primary key wäre die Serverbelastung / Performance viel
> besser.
> 
> Stimmt das? Was hat ein primary key damit zu tun?
> 
> (Mal davon abgesehen, dass ich eh kein Feld habe, dass nicht zweimal den
> gleichen Wert haben kann)
> 
> MfG Bruno Haller <bruno_(at)_hil.net>

Hi Bruno

Am besten erklaert man solche allgemeinen Fragen mit einem Beispiel.
Stell Dir ein Telefonbuch vor, das NICHT alphabetisch nach Teilnehmer sortiert ist.
Wenn Du jetzt die Nummer einer Marion Mustermann suchst, bleibt Dir nichts anderes übrig, als das gesammte Telefonbuch von vorne nach hinten zu durchsuchen, bis Du sie gefunden hast.
Ein INDEX oder KEY ist nichts anderes als ein Inhaltsverzeichnis fuer ein Kriterium.
In unserem Beispiel haette das Telefonbuch ein Inhaltsverzeichnis, in dem alle Namen alphabetisch sortiert aufgefuehrt sind. Ausserdem steht bei jedem Namen die Seite und die Spaltennummer dabei.
Genausogut koennte man ein Inhaltsverzeichnis aller aufsteigend sortierten Telefonnummern anlegen, oder eines fuer alle Strassennamen usw.

Damit kommen wir zum PRIMARY KEY ein Primaerschluessel ist der Index, der alle Daten eindeutig unterscheidet, und dazu die geringste Datenmenge benoetigt.
In unserem Beispiel kann der Name kein Primaerschluessel sein, weil er nicht eindeutig ist. Man koennte natuerlich den gesammten Standardeintrag im Telefonbuch (Name,Strasse,Ort,Telefonnummer) als Primaerschluessel verwenden, aber eigentlich sind das
zu viele unnoetige Daten.
Am besten eignet sich die Telefonnummer als Primaerschluessel.

Damit sind wir schon beim Problem aller Indexe.
Sie sind immer nur dann nuetzlich, wenn die Suche auch ueber die dort aufgelistete Information erfolgt.
Z.B. nuetzt ein Primaerschluessel Telefonnummer nichts, wenn man die Nummer zu einer Person sucht :)

Warum richtet man nicht einfach alle moeglichen Indexe ein?
Ganz einfach deshalb, weil beim Einfuegen oder Aendern des (Telefonbuch-) Inhalts auch alle betroffenen Indexe geaendert werden muessen, und das kann dauern.

Deshalb muss man als DB-Administrator die Suchanfragen analysieren, um die richtigen Indexe anzulegen.

Ich hoffe das ist jetzt etwas klarer geworden.

Tschau
Christian


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive