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

在MySQL中创建索引时,索引名的意义是什么?,mysql,indexing,Mysql,Indexing,我这样做是为了在重复密钥更新时使用: CREATE UNIQUE INDEX blah on mytable(my_col_to_make_an_index); 它工作得很好。我只是不知道索引名的用途是什么——在本例中是“废话”。我读过的东西说要用一个,但我不明白为什么。它似乎没有在查询中使用,尽管我可以在导出模式时看到它 所以。。。索引名的用途是什么?如果它有助于创建表中的行最终看起来像: UNIQUE KEY `clothID` (`clothID`) 索引名称用于为将来的命令引用索引。

我这样做是为了在重复密钥更新时使用

CREATE UNIQUE INDEX blah on mytable(my_col_to_make_an_index);
它工作得很好。我只是不知道索引名的用途是什么——在本例中是“废话”。我读过的东西说要用一个,但我不明白为什么。它似乎没有在查询中使用,尽管我可以在导出模式时看到它

所以。。。索引名的用途是什么?如果它有助于
创建表中的行
最终看起来像:

UNIQUE KEY `clothID` (`clothID`)

索引名称用于为将来的命令引用索引。比如下跌指数

想想索引名,比如表名。你可以很容易地做一张叫做“废话”的桌子

CREATE TABLE blah (f1 int);
但是“废话”对将来的参考并没有多大帮助。保持一致。差不多

CREATE UNIQUE INDEX field_uniq on mytable(field);


你说得对。索引名仅用作标识符,因此,如果以后需要对其进行编辑、删除或查询,可以引用它。它不用于任何其他用途


您可以根据自己最方便的方式命名索引,但某种一致性可能会对您有所帮助(将索引命名为“blah”是完全有效的,但您不知道它在哪里,它的作用是什么,也不知道创建它的原因)。

命名是为了允许全局名称空间,并有助于更好地理解表架构

索引名对于索引非常有用。尽量不要对索引和列使用相同的名称(模棱两可),驼峰大小写对于像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

我认为没有一个标准的命名约定,任何看起来直观的都会有很大帮助。

我可以在不同的表上创建相同名称的索引吗?@FrozenFlame您可以在MySQL中创建,但在许多其他数据库中,如PostgreSQL中则不行。
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