【问题标题】:Indexes in MySQL (Unique, Write Statement)MySQL中的索引(唯一,写语句)
【发布时间】:2011-07-17 22:48:53
【问题描述】:

我有 2 个问题

  1. 如果我的表包含这样的唯一列:

如果存在测试表,则删除表;
创建表测试表( ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
GUID VARCHAR(32) 唯一 NULL);

我是否需要为此 GUID 列创建索引。
注意:我在带有连接表的 Where 语句中有 GUID 列

我的第二个问题如果更新的列不是索引,更新语句是否会影响索引表?

【问题讨论】:

  • 好的,编辑答案以解决第二个问题。

标签: mysql


【解决方案1】:

不,UNIQUE 是一种索引,因此您不需要同一列上的另一个索引。

如果更改的列没有被索引,它不会更新索引。

未更改的索引不会更新。 source

【讨论】:

  • +1 更准确地说,所有已知的数据库都使用唯一索引来强制执行唯一约束。
【解决方案2】:

这取决于您使用的数据库。不同的数据库有不同的索引方式。

如果你使用 InnoDB,那么主键和唯一键已经是一个索引,所以你不需要。如果您为 GUID 列手动创建另一个索引,那么您将在该列上有一个额外的冗余索引,这会浪费空间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 2010-09-28
    • 2015-02-08
    • 2015-03-26
    • 1970-01-01
    相关资源
    最近更新 更多