mysql - SQL 2 列主键,但想要搜索其中一列,我应该将其设为单独的键吗?

标签 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 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一起,我还需要主键吗?

对于数千万行时该表的性能有何评论?

最佳答案

主键是定义唯一性的列 - 在您的情况下,它们似乎是 user_id + group_id。 user_id+group_id键可用于按user_id(第一列)进行搜索,并且可以仅针对group_id添加单独的索引。

关于mysql - SQL 2 列主键,但想要搜索其中一列,我应该将其设为单独的键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26566810/

相关文章:

mysql - 如何在单个查询中单独获取过去三个月的数据计数?

mysql - 优化MySQL查询,选择内选择,多个相同

javascript - "Fixing"来自 MySQL 的 JSON

mysql - null 外键 mysql 不能为 null

python - pyparsing,每个,结果名称

mysql - 元旦12-2按月选择记录

php - 无法从列表框中读取 POST 数据

mysql - 从表格宽度日期字段获取每周分数

sql - 在 oracle spatial 10g 中使用 sdo_relate 的最佳方法是什么?

php - 对两个表的 SQL 结果进行排序