【问题标题】:What is the significance of the index name when creating an index in MySQL?在 MySQL 中创建索引时,索引名称的意义是什么?
【发布时间】:2011-01-05 05:35:55
【问题描述】:

为了使用on duplicate key update,我做了这样的事情:

CREATE UNIQUE INDEX blah on mytable(my_col_to_make_an_index);

它工作得很好。我只是不确定索引名称的用途是什么——在这种情况下是“废话”。我读过的东西说要使用一个,但我不明白为什么。它似乎没有在查询中使用,尽管如果我导出架构我可以看到它。

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

UNIQUE KEY `clothID` (`clothID`)

【问题讨论】:

    标签: mysql indexing


    【解决方案1】:

    索引名称用于引用将来命令的索引。喜欢删除索引。

    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);
    

    【讨论】:

    • 我可以在不同的表上创建同名的索引吗?
    • @FrozenFlame 在 MySQL 中可以,但在许多其他数据库中却不行,例如 PostgreSQL。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      你是对的。索引名仅作为标识符使用,以后需要对其进行编辑、删除或查询时可以参考。它不用于任何其他目的。

      您可以将索引命名为对您最方便的任何名称,但保持一致性可能会对您有所帮助(将索引命名为“blah”是完全有效的,但您不会知道它在哪里、它做什么,或者你为什么创建它)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-25
        • 2017-09-27
        • 2019-04-26
        • 2013-01-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多