SQL:使用两个索引创建表

时间:2016-04-12 17:10:35

标签: mysql sql indexing unique-constraint

我之前使用以下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制作索引,以便将来的查询有效地发生?

2 个答案:

答案 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,并且只能有一个主键列(或主键列的组合)。可以有任意数量的唯一键列。