2011-01-05 9 views
11

私はon duplicate key updateを使用するためにこのような何かやった:MySQLでインデックスを作成する際のインデックス名の意義は何ですか?

CREATE UNIQUE INDEX blah on mytable(my_col_to_make_an_index); 

をし、そのうまく働きました。私は、インデックス名の目的が何であるかはわかりません - この場合、「ああ」。私が読んだものは1つを使用すると言いますが、なぜそのことを知ることはできません。クエリでは使用されていないようですが、スキーマをエクスポートすると表示されます。

インデックスの名前はどのような目的に役立ちますか?それはCREATE TABLEでラインを助けている場合のように見える終わる:

UNIQUE KEY `clothID` (`clothID`) 

答えて

11

インデックス名を、将来のコマンドのインデックスを参照するために使用されます。ドロップインデックスのように。

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

ただ、テーブル名などのインデックス名を考えます。あなたは 'まるで'と呼ばれるテーブルを簡単に作ることができます。

CREATE TABLE blah (f1 int); 

しかし、「blah」は今後の参考にはあまり役に立ちません。ただ一貫している。あなたが正しい

CREATE UNIQUE INDEX field_uniq on mytable(field); 

または

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

異なるテーブルに同じ名前のインデックスを作成できますか? –

+1

@FrozenFlame MySQLではできますが、PostgreSQLのような他の多くのデータベースでは使用できません。 – ostrokach

1

のようなもの。インデックス名は識別子としてのみ使用されるので、後で編集、削除、またはクエリする必要がある場合は、参照することができます。他の目的には使用されません。

索引には、最も便利なものの名前を付けることができますが、索引の名前を「blah」と指定すると完全に有効ですが、どこにあるのか、またはなぜあなたがそれを作成したか)。

8

名前は、グローバル名前空間を許可し、テーブルスキーマをよりよく理解するのに役立ちます。

インデックス名はforcing index hintで非常に便利です。インデックスとカラムの両方に同じ名前を使用しないでください(あいまい)、Windowsのようなシステムではラクダの大文字小文字は意味がありません(大文字と小文字の区別は許されません)。このように例えば

、:

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 

私は直感的と思われるものは何でも、標準の命名規則があるとは思わないが、ほとんどのに役立ちます。

関連する問題