我之前使用以下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 KEYS:
PRIMARY KEY (id_A)
PRIMARY KEY (id_B)
我如何为id_B制作索引,以便将来的查询有效地发生?
答案 0 :(得分:4)
您可以在列上添加UNIQUE INDEX
。虽然一个表只能有一个PRIMARY KEY
,但它可以包含您可能需要的UNIQUE INDEX
个。{/ p>
ALTER TABLE myTable
ADD UNIQUE INDEX `UI_myTable_idB` (`id_B` );
答案 1 :(得分:2)
您可以使用MySQL UNIQUE KEY作为列。这将强制id_B列中的值是唯一的,但不能将其用作主键列。你可以用这个声明来实现它:
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),
UNIQUE KEY (id_b))
这会自动将列索引为您想要的索引。 MySQL表中的主键和唯一键基本相同,除了主键不能为NULL,并且只能有一个主键列(或主键列的组合)。可以有任意数量的唯一键列。