用建立索引的方式来替代外键关系

为什么不用外键而用建立索引的方式来代替外键的关系?

外键有性能问题:

1.数据库需要维护外键的内部管理;

2.外键等于把数据的一致性事务实现,全部交给数据库服务器完成;

3.有了外键,当做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,而不得不消耗资源;

4.外键还会因为需要请求对其他表内部加锁而容易出现死锁情况;

建表语句

       Table: a
Create Table: CREATE TABLE `a` (
  `a_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` char(16) DEFAULT NULL,
  `b_id` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`a_id`),
  KEY `a_to_b` (`b_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4

       Table: b
Create Table: CREATE TABLE `b` (
  `b_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `age` smallint(6) DEFAULT NULL,
  PRIMARY KEY (`b_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4

联表查询结果

 

posted @ 2019-08-01 22:43  平平无奇小辣鸡  阅读(1074)  评论(0编辑  收藏  举报