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