【发布时间】:2016-08-03 10:54:28
【问题描述】:
我之前使用以下 SQL 代码创建了一个表:
CREATE TABLE myTable (
id_A BIGINT NOT NULL,
id_B INT NOT NULL,
some_info varchar(255),
some_info2 varchar(255),
PRIMARY KEY (id_A)
)
在之前创建的表中,id_A 和 id_B 都是唯一值。我了解 id_A 被强制为唯一 PRIMARY KEY (id_A) 代码,它是完美的(也索引它),但是 id_B 不是
这就是我感到困惑的地方。 id_B 也将是唯一的,但是我不确定如何强制它在表中唯一,以及如何使数据库为其创建索引,以便将来在此表上使用 SELECT 的查询将具有良好的性能。我知道我不能有两个主键:
PRIMARY KEY (id_A)
PRIMARY KEY (id_B)
我怎样才能为 id_B 建立索引,以便以后的查询高效地进行?
【问题讨论】:
-
我相信 MySQL 有 UNIQUE 关键字可以放在数据类型之后。
-
我建议你阅读主键。主键是行“标识符”,而不是索引。
-
@TuncayGöncüoğlu - 在 MySQL 中,
PRIMARY KEY是一个索引,它是唯一的,并且(对于 InnoDB)它与数据“聚集”在一起。 -
@RickJames 我知道。但是将它们视为索引会导致发布者犯的错误。在单列主键中没有关系,但是在多列主键中,正如所问的那样,区别很明显,即键作为一个整体是唯一的,并非每一列都是唯一的。这对于 MySQL 来说是正确的,对于所有其他 RDBMS 也是如此。因此我建议阅读主键。
标签: mysql sql indexing unique-constraint