在MySQL中创建索引时索引名称的意义是什么?

时间:2011-01-05 05:35:55

标签: mysql indexing

为了使用on duplicate key update

,我已经做了类似的事情
CREATE UNIQUE INDEX blah on mytable(my_col_to_make_an_index);

它工作得很好。我只是不确定索引名称的用途是什么 - 在这种情况下'blah'。我读过的东西说要用一个,但我无法理解为什么。它似乎没有在查询中使用,但是如果我导出模式,我可以看到它。

那么......索引名称的用途是什么?如果它有助于CREATE TABLE中的行看起来像:

UNIQUE KEY `clothID` (`clothID`)

3 个答案:

答案 0 :(得分:17)

索引名称用于引用将来命令的索引。像掉落指数一样。

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

只需考虑表名等索引名称。您可以轻松制作一个名为'blah'的表。

CREATE TABLE blah (f1 int);

但'blah'对于将来的参考不是很有帮助。只是保持一致。

之类的东西
CREATE UNIQUE INDEX field_uniq on mytable(field);

CREATE INDEX field1_field2_inx on mytable(field1, field2);

答案 1 :(得分:9)

命名是允许全局命名空间,并帮助更好地理解表模式。

索引名称对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

我不认为有一个标准的命名约定,无论看起来多么直观都会有所帮助。

答案 2 :(得分:1)

你是对的。索引名称仅用作标识符,因此如果您以后需要编辑,删除或查询,则可以引用它。它不用于任何其他目的。

你可以为你最方便的地方命名索引,但是一些一致性可能对你有所帮助(命名你的索引'blah'是完全有效的,但你不会知道它在哪里,它做什么,或者为什么你创造它。)