【问题标题】:MySQL: UNIQUE constraint without indexMySQL:没有索引的唯一约束
【发布时间】:2013-11-23 08:06:54
【问题描述】:

是否可以添加类似的约束

ALTER TABLE `t1` ADD UNIQUE(`col1`, `col2`);

不创建索引?该索引不会用于任何查询,因此会浪费空间。

如果插入和更新速度较慢也不是问题,因为表不会经常更新。

【问题讨论】:

  • 谢谢。我在每一列都有一个索引。通过提供的链接,我了解到如果存在唯一约束,我将不需要 col1 索引,所以我至少可以删除那个。不过,通过对列进行唯一索引来防止重复仍然“感觉”是一种解决方法。

标签: mysql indexing constraints unique


【解决方案1】:

不,这是不可能的。 UNIQUE constraint 包含一个索引定义,我几乎无法想象在不创建索引的情况下如何实现它(用 DBMS 术语)。

您应该意识到索引不仅仅是“神奇的”——它们是一个真正的数据结构,它需要空间来放置,需要处理特殊的过程等等。唯一约束本身意味着 唯一索引 值,而不是 唯一列 值。

【讨论】:

  • 补充一点,如果数据库必须保证/保护列的唯一性,它需要快速访问该列中的所有值,以检查现有值在插入或更新时。无论如何,我都不是 DBMS 专家,但索引可以提供快速访问。
  • 不完全如此,但你说得有道理。需要索引是因为 如何 可以达到唯一性(即检查需要哪个索引的 B-tree - 如果我们谈论的是 B-tree 索引)
猜你喜欢
  • 2019-10-26
  • 2015-12-29
  • 2011-03-18
  • 2010-11-23
  • 2021-11-02
  • 1970-01-01
  • 2011-11-23
  • 2018-12-02
  • 2014-06-25
相关资源
最近更新 更多