2011-01-05 5 views
11

Ich habe so etwas wie dies, um on duplicate key update zu verwenden:Welche Bedeutung hat der Indexname beim Erstellen eines Index in MySQL?

CREATE UNIQUE INDEX blah on mytable(my_col_to_make_an_index); 

und seine funktionierte gut. Ich bin nur nicht sicher, was der Zweck des Indexnamens ist - in diesem Fall 'blah'. Die Sachen, die ich gelesen habe, sagen, dass ich eine benutzen soll, aber ich kann nicht verstehen warum. Es scheint nicht in Abfragen verwendet zu werden, obwohl ich es sehen kann, wenn ich das Schema exportieren.

Also ... welchen Zweck erfüllt der Indexname? Wenn es die Linie in den CREATE TABLE hilft endet aussehen wie:

UNIQUE KEY `clothID` (`clothID`) 

Antwort

11

Der Indexname den Index für zukünftige Befehle verweisen verwendet wird. Wie Drop-Index.

http://dev.mysql.com/doc/refman/5.0/en/drop-index.html

Man denke nur an Indexnamen wie Tabellennamen. Sie können genauso gut eine Tabelle namens "blah" erstellen.

CREATE TABLE blah (f1 int); 

Aber 'blah' ist nicht sehr hilfreich für zukünftige Referenz. Sei nur konsequent. so etwas wie

CREATE UNIQUE INDEX field_uniq on mytable(field); 

oder

CREATE INDEX field1_field2_inx on mytable(field1, field2); 
+0

Kann ich Indizes mit demselben Namen in verschiedenen Tabellen erstellen? –

+1

@FrozenFlame Sie können in MySQL, aber nicht in vielen anderen Datenbanken, wie PostgreSQL. – ostrokach

1

Sie richtig sind. Der Indexname wird nur als Bezeichner verwendet. Sie können sich darauf beziehen, wenn Sie ihn später bearbeiten, löschen oder abfragen müssen. Es wird nicht für andere Zwecke verwendet.

Sie können den Index benennen, was auch immer für Sie am bequemsten ist, aber eine gewisse Konsistenz würde Ihnen wahrscheinlich helfen (Ihren Index 'blah' zu benennen ist vollkommen gültig, aber Sie haben keine Ahnung, wo es ist, was es tut, oder warum du es erstellt hast).

8

Die Benennung soll globalen Namespace erlauben und helfen, das Tabellenschema besser zu verstehen.

Der Indexname ist sehr nützlich für forcing index hint. Versuchen Sie nicht, den gleichen Namen für den Index und die Spalte (mehrdeutig) zu verwenden, und camel case ist für ein System wie Windows bedeutungslos (das erlaubt keine Groß-/Kleinschreibung).

Zum Beispiel wie folgt aus:

unique key cloth_id_uniq (cloth_id); 
>>allow people knowing this an unique key on column cloth_id 

fulltext key description_ft (description); 
>>allow people knowing this index is fulltext on column description 

Ich glaube nicht, gibt es eine Standard-Namenskonvention, was am meisten helfen intuitive scheint.

Verwandte Themen