与多表连接相比,自连接是否会带来更高的性能损失?

时间:2010-11-29 12:11:18

标签: mysql

当我询问数据建模问题的正确方法时 - 使用一个或两个表 - 一些用户回答说自联接表现出性能责任。鉴于以下情况(MySQL数据库),这是否正确:

  1. 该模型适用于Q& A网站,其中问题和答案存储在同一个表中,由TypeId列表示。
  2. 问题可以有很多答案;它可以受到许多用户的青睐和投票。
  3. Qs和As有自己的评论
  4. 另一种方法是在各自的表中对问题,答案和评论进行建模,从而避免自我加入。我还没决定使用哪种方法。虽然这个问题与联接性能有关,但是对这两个用例的任何其他建议都会受到赞赏。

    由于

1 个答案:

答案 0 :(得分:3)

您应该将问题和答案放在单独的表格中,而不是从绩效角度来看,但是因为它们在逻辑上是不同的,否则会让人感到困惑。

从性能的角度来看,没有特别的理由说明为什么单个自连接会很慢 - 我怀疑你正在考虑的问题是你是否需要递归查询MySQL中的速度慢。

关于性能,您的设计意味着您的密钥由两个字段组成,而不是一个,因为您需要在条件中指定是否需要问题或答案。更广泛的密钥需要更长的时间来进行比较 - 这不是一个严重的问题,但它可能会在某些情况下产生影响。