具有复合索引的mysql唯一索引

时间:2015-03-11 08:45:53

标签: mysql indexing unique-constraint

我在mysql中有一个表如下:

CREATE TABLE `demo_tbl` (
    `id`        MEDIUMINT(8) NOT NULL,
    `uniquefld` VARCHAR(20) NULL,
    `field1`    VARCHAR(20) NULL,
    PRIMARY KEY (`id`),
    UNIQUE INDEX `ux_uniquefld` (`uniquefld` ASC),
    INDEX `ix_uniquefld_field1` (`uniquefld` ASC, `field1` ASC)
);

这里我创建了2个索引,一个是uniquefld字段的唯一索引,另一个是2个字段uniquefld& field1

有没有办法为uniquefld创建单个索引而不是两个具有唯一性的索引?

2 个答案:

答案 0 :(得分:0)

为什么需要索引ix_uniquefld_field1?因为uniquefld是唯一的,所以对uniquefld + field1的任何查询都可以通过访问ux_uniquefld上的索引来做到。

答案 1 :(得分:0)

CREATE TABLE demo_tbl (
    id MEDIUMINT NOT NULL PRIMARY KEY,
    uniquefld VARCHAR(20) CONSTRAINT uid_uniquefld UNIQUE,
    field1    VARCHAR(20),
);
CREATE INDEX idx_field1 ON demo_tbl (field1);

这将非常有效。