【问题标题】:SQL 2 column primary key but want to search on one of those columns should I make it a separate key? [duplicate]SQL 2 列主键但想在其中一个列上进行搜索,我应该将其设为单独的键吗? [复制]
【发布时间】:2014-10-25 20:15:25
【问题描述】:

我目前拥有的是:

CREATE TABLE IF NOT EXISTS members (
    user_id        INTEGER UNSIGNED NOT NULL,
    group_id       INTEGER UNSIGNED NOT NULL,
    status         TINYINT DEFAULT 1,
    role           TINYINT DEFAULT 0,
    created        TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT mem_pk PRIMARY KEY (user_id, group_id),
    KEY (status)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8;

我将用户分配到组(唯一用户和组组合的一行),但我希望能够单独搜索 user_idgroup_id,所以我应该为字段添加键:

KEY (user_id),
KEY (group_id)

这样做会有所收获吗?

事实上,我永远不会同时搜索user_idgroup_id,所以我什至需要主键吗?

还有几千万行时这个表上的任何 cmets 性能?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    主键是定义唯一性的列 - 在您的情况下,它们似乎是 user_id + group_id。 user_id+group_id 键可用于按user_id(第一列)搜索,只能为group_id添加单独的索引。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 2022-08-18
    • 2014-10-01
    • 1970-01-01
    • 2011-01-16
    • 2020-01-18
    • 2012-12-11
    相关资源
    最近更新 更多