我的评论表如下
Comments
----------------
Id
ContentId
CreateDate
UserId
Text
ImageUrl
当我想获得评论时,我使用以下sql查询:
SELECT Comments.*, Users.Name AS Username, Users.Thumbnail AS UserThumbnail
FROM Comments, Users
WHERE Users.ID = Comments.UserId
如果我将Username和UserThumbnail列添加到Comments表中并只使用SELECT * FROM Comments
查询
Comments
-----------
Id
ContentId
CreatedDate
UserId
Username
UserThumbnail
Text
ImageUrl
答案 0 :(得分:0)
嗯,是的,它可能会提高查询的性能,但是以牺牲冗余为代价 - 您现在必须多次存储用户名和缩略图。
这是关系数据库设计的基本原则 - 通过外键使用连接来消除重复。
答案 1 :(得分:0)
如果您已正确编入索引,那么查询应该很快。不,你不应该考虑非规范化,因为你必须添加触发器以使数据保持最新,因为它会改变,这将减慢插入速度。或者你的数据库中会有不良数据,这使整个事情变得毫无价值。
BTW,隐式连接区域是一个sql反模式,你应该停止使用它们。很容易发生意外的连接,如果你将它们与左连接结合起来就会得到不正确的结果,并且它们更难以维护并在20多年前被替换。