我有两张桌子:文章和评论;
"Comments.articleID"
是外键。
我想查询数据库以撰写一个网站,该网站显示某篇文章的文章文本(给定一篇文章ID)和所有文章的评论。
我可以想到两种查询数据的方法:
使用2个单独的查询:
SELECT articles.text FROM articles where id = givenArticleID
SELECT comments.* FROM comments where comments.articleID = givenArticleID
使用内部联接:
SELECT articles.text, comments.*
FROM articles
INNER JOIN comments on articles.id = comments.articleID
WHERE articles.id = givenArticleID
第一个选项只返回我感兴趣的数据 - 这很好。
第二个选项返回我感兴趣的所有数据,但是数据远远超过必要的数据。结果集中的每一行都包含article.text列,这可能是很多(不必要的)数据。
我认为对于某些查询来说,连接会更好,不需要WHERE条件(因此包含不同的文章)。
在上述情况下,您通常更喜欢哪种方式? 还是有更好的选择......?
答案 0 :(得分:1)
选项2可能更好,因为它只是一次客户端 - 服务器往返。
另外请不要忘记每个查询都必须由数据库服务器进行解析。
我建议您对两个版本进行基准测试,看看哪个版本效果更好。