【发布时间】:2011-08-12 00:43:44
【问题描述】:
我找到了一个类似的主题,但它并没有真正抓住我想要问的本质 - 所以我创建了一个新主题。
我知道规范化和性能之间存在权衡,我想知道绘制这条线的最佳做法是什么?在我的特定情况下,我的消息传递系统具有三个不同的表:messages_threads(总体消息持有者)、messages_recipients(参与人员)和messages_messages(实际消息+时间戳)。
为了返回“收件箱”视图,我必须将messages_threads 表、users 表和pictures 表左连接到messages_recipients 表,以获取填充视图的信息(个人资料图片、发件人姓名、线程id)...我仍然需要添加一个消息连接以从最后一条消息中检索文本,以便向用户显示最后一条消息的“预览”。
我的问题是:SQL 中的 JOINS 对性能的影响有多大?例如,我可以在 messages_threads 表中名为“sendername”的字段下存储发件人的姓名(我必须让用户加入才能检索) - 但就规范化而言,我一直被教导要避免数据冗余?
你在哪里画线?还是我高估了 SQL 连接对性能的影响?
【问题讨论】:
标签: mysql sql performance join