Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL 2列主键,但要搜索其中一列,是否应将其设置为单独的键?_Mysql_Sql - Fatal编程技术网

Mysql SQL 2列主键,但要搜索其中一列,是否应将其设置为单独的键?

Mysql SQL 2列主键,但要搜索其中一列,是否应将其设置为单独的键?,mysql,sql,Mysql,Sql,我目前拥有的是: 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

我目前拥有的是:

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\u id
group\u id
,因此我是否应该为字段添加键:

KEY (user_id),
KEY (group_id)
我这样做会有什么好处吗

事实上,我永远不会同时搜索
用户id
组id
,所以我甚至需要主键吗


此外,当数千万行的主键是定义唯一性的列时,此表上的任何注释都会产生性能?

在您的情况下,它们似乎是用户id+组id。用户id+组id键可用于按用户id(第一列)搜索,并且您只能为组id添加单独的索引。

是的,这是正确的,有关更全面的解释,请参阅