:::tips 在对性能要求较高的系统设计中,尽量不要使用外键,外键关系在应用层实现即可 :::
- 使用外键会降低系统性能:使用外键的表在 Insert、Update、Delete操作时都要额外去查询对应的表中相关数据,增加数据库负担、增加系统响应时间、降低系统性能
- 使用外键更容易造成数据库死锁:由于每次操作都要额外查询对应的表,就需要多获取一个锁,在高并发的场景中更容易死锁,引起并发问题
- 使用外键不利于系统的扩展性:外键、触发器、存储过程等可以在应用层控制的逻辑尽量在应用层控制,这样在数据迁移、数据扩容的过程中工作量会大大减少