为了使用on duplicate key update
:
CREATE UNIQUE INDEX blah on mytable(my_col_to_make_an_index);
它工作得很好。我只是不确定索引名称的用途是什么 - 在这种情况下'blah'。我读过的东西说要用一个,但我无法理解为什么。它似乎没有在查询中使用,但是如果我导出模式,我可以看到它。
那么......索引名称的用途是什么?如果它有助于CREATE TABLE
中的行看起来像:
UNIQUE KEY `clothID` (`clothID`)
答案 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'是完全有效的,但你不会知道它在哪里,它做什么,或者为什么你创造它。)