我目前拥有的是:
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_id
和group_id
单独地,我应该为字段添加键:
KEY (user_id),
KEY (group_id)
这样做我会得到什么吗?
事实上我永远不会搜索user_id
和group_id
一起,我还需要主键吗?
对于数千万行时该表的性能有何评论?
最佳答案
主键是定义唯一性的列 - 在您的情况下,它们似乎是 user_id + group_id。 user_id+group_id键可用于按user_id(第一列)进行搜索,并且可以仅针对group_id添加单独的索引。
关于mysql - SQL 2 列主键,但想要搜索其中一列,我应该将其设为单独的键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26566810/