用建立索引的方式来替代外键关系
为什么不用外键而用建立索引的方式来代替外键的关系?
外键有性能问题:
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
联表查询结果