开发者社区 问答 正文

mysql数据表之间是多对多的关系时中间表主键比不加主键快?

比如商品表和属性表,因为是多对多的关系,所以有个商品属性中间表;
CREATE TABLE IF NOT EXISTS dslxs_goods_attr (
goods_id mediumint(8) unsigned NOT NULL COMMENT '商品的id',
attr_id mediumint(8) unsigned NOT NULL COMMENT '属性的id',
KEY goods_id (goods_id),
KEY attr_id (attr_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品属性中间表';
如果在这张表中加个id mediumint(8) unsigned NOT NULL AUTO_INCREMENT,并设为主键PRIMARY KEY (id)。这样会不会快点,没有大数据测试不起来,哪位经验多的请告知一下。。

展开
收起
蛮大人123 2016-02-08 18:26:01 3974 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    所谓的KEY只是索引的别名而已,而索引才是提升你这种映射表查询速度的关键,而你已经设置了这两个字段的索引了。现在可能要做的就是加个外键,提升表和整个数据库的稳定性,其他的也就这样了,加唯一键反而会略微增加插入负担,而且肯定不会有基于这个唯一键的查询,也许存在基于这个键的删除(可能性很小,非要加速的话,就添加一个二者的联合索引,插入会变慢,索引文件会变大)。
    大致就是这样,要跳出所有表都要来个唯一递增键的误区。

    2019-07-17 18:39:53
    赞同 展开评论