SQL:用两个索引创建table

SQL: Create table with two indexes

我之前使用以下 SQL 代码创建了一个 table:

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) 
)

在之前创建的 table 中,id_A 和 id_B 都是唯一值。我知道 id_A 被 PRIMARY KEY (id_A) 代码,这是完美的(它也对其进行索引),但是 id_B 不是

这是我感到困惑的地方。 id_B 也将是唯一的,但是我不确定如何强制它在 table 中是唯一的,以及如何让数据库为它创建索引以便将来使用 [=29] 的查询=] 在这个 table 上会有很好的表现。我知道我不能有两个主键:

PRIMARY KEY (id_A) 
PRIMARY KEY (id_B) 

我该如何为 id_B 创建索引,以便将来的查询高效进行?

您可以在该列上添加 UNIQUE INDEX。虽然一个 table 只能有一个 PRIMARY KEY,但它可以有您可能需要的任意多个 UNIQUE INDEX

ALTER TABLE myTable
ADD UNIQUE INDEX `UI_myTable_idB` (`id_B` );

您可以对列使用 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 table中的主键和唯一键本质上是一样的,只是主键不能为NULL,并且只能有一个主键列(或主键列的组合)。可以有任意数量的唯一键列。