比如创建order表,有createBy,updateBy,DeleteBy这几个用户id
每次写查询的时候都要关联3次user表,为了取这几个name,
感觉数据库开销变大很多,
是有什么的sql语句解决这个问题,还是干脆在order表里面加上createName,updateName,DeleteName这几个字段得了?
比如创建order表,有createBy,updateBy,DeleteBy这几个用户id
每次写查询的时候都要关联3次user表,为了取这几个name,
感觉数据库开销变大很多,
是有什么的sql语句解决这个问题,还是干脆在order表里面加上createName,updateName,DeleteName这几个字段得了?
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
在数据库设计中,通常不建议将关联字段的名字直接存储在从表中,因为这会导致数据冗余和不一致。相反,可以通过编写SQL查询来获取关联字段的名字,这样可以减少数据库开销并保持数据的一致性。
例如,你可以使用以下SQL查询来获取order表中的createBy、updateBy和deleteBy对应的用户名:
SELECT o.id, u1.username AS createName, u2.username AS updateName, u3.username AS deleteName
FROM order o
JOIN user u1 ON o.createBy = u1.id
JOIN user u2 ON o.updateBy = u2.id
JOIN user u3 ON o.deleteBy = u3.id;
这样,你可以在需要的时候获取这些名字,而不是每次都从user表中查询。当然,如果你发现这种查询方式对性能有影响,可以考虑在order表中添加额外的字段(如createName, updateName, deleteName)来存储这些信息。但是,这样做可能会导致数据冗余和一致性问题,因此需要权衡利弊。