【问题标题】:mysql unique index with compound index具有复合索引的mysql唯一索引
【发布时间】:2015-03-11 08:45:53
【问题描述】:

我在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 个字段 uniquefldfield1

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

【问题讨论】:

  • CONSTRAINT uc_uniquefld UNIQUE (uniquefld)constraint
  • @NagendraNigade,mysql支持吗?

标签: mysql indexing unique-constraint


【解决方案1】:

为什么需要索引 ix_uniquefld_field1?由于uniquefld 是唯一的,因此uniquefld+field1 上的任何查询都可以通过访问ux_uniquefld 上的索引来完成。

【讨论】:

  • 嗨@gilg,因为field1已经使用了order by和select子句,并且这个表有大约200万条记录,我的select查询执行得很慢,我想优化它。
  • 可以粘贴查询吗?
  • 正如 gilg 提到的,粘贴您的查询,这将帮助我们找到需要时间的地方
【解决方案2】:
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);

这将非常有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2012-03-24
    • 2017-02-19
    • 2015-03-03
    • 2014-10-01
    • 1970-01-01
    相关资源
    最近更新 更多