2查询与内部联接的位置

时间:2018-01-22 19:43:29

标签: mysql sql

我有两张桌子:文章和评论; "Comments.articleID"是外键。

我想查询数据库以撰写一个网站,该网站显示某篇文章的文章文本(给定一篇文章ID)和所有文章的评论。

我可以想到两种查询数据的方法:

  1. 使用2个单独的查询:

    SELECT articles.text FROM articles where id = givenArticleID
    
    SELECT comments.* FROM comments where comments.articleID = givenArticleID
    
  2. 使用内部联接:

     SELECT articles.text, comments.* 
     FROM articles 
     INNER JOIN comments on articles.id = comments.articleID 
     WHERE articles.id = givenArticleID
    
  3. 第一个选项只返回我感兴趣的数据 - 这很好。

    第二个选项返回我感兴趣的所有数据,但是数据远远超过必要的数据。结果集中的每一行都包含article.text列,这可能是很多(不必要的)数据。

    我认为对于某些查询来说,连接会更好,不需要WHERE条件(因此包含不同的文章)。

    在上述情况下,您通常更喜欢哪种方式? 还是有更好的选择......?

1 个答案:

答案 0 :(得分:1)

选项2可能更好,因为它只是一次客户端 - 服务器往返。

另外请不要忘记每个查询都必须由数据库服务器进行解析。

我建议您对两个版本进行基准测试,看看哪个版本效果更好。