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添加单独的索引。是的,这是正确的,有关更全面的解释,请参阅