Php Mysql:一个大型select语句?还是多个小声明?

Php Mysql:一个大型select语句?还是多个小声明?,php,mysql,Php,Mysql,只是想知道在效率方面,下面的最佳实践是什么 我有一个名为“blogPosts”的表,其中有几个字段。我还有一个名为“comments”的表,其中包含一列blogPost\u Id 一篇博文可能会有很多评论 我想检索有关所有帖子和所有子评论的所有信息,是否最好尝试将其包含在一个sql命令中,如下所示: SELECT*FROM blogPosts LEFT JOIN comments ON blogPosts.id=comments.blogPost\u id 还是从博客帖子中选择*更好 然后对每篇

只是想知道在效率方面,下面的最佳实践是什么

我有一个名为“blogPosts”的表,其中有几个字段。我还有一个名为“comments”的表,其中包含一列blogPost\u Id

一篇博文可能会有很多评论

我想检索有关所有帖子和所有子评论的所有信息,是否最好尝试将其包含在一个sql命令中,如下所示:

SELECT*FROM blogPosts LEFT JOIN comments ON blogPosts.id=comments.blogPost\u id

还是从博客帖子中选择*更好

然后对每篇文章执行另一个
从blogPost\u id=postId的评论中选择*


我应该补充的是,我将根据帖子和评论字段向SQL添加过滤器。

连接到数据库的成本很高。你做得越少越好


换一种说法,什么更快?进行1000次往返以卸下1000个箱子或一次往返以卸下1000个箱子?

作为一般规则,较少往返数据库更好,因此通常首选一次大型查询

然而,这不是一个规则。如果没有正确设置索引,查询可能会慢很多。另一件需要注意的事情是代码的复杂性和可维护性。我曾经写过一个非常复杂的查询,它连接了大约17个表。调试和修改是一场噩梦

基准点非常重要,因为它是衡量绩效的唯一工具。实际上,您可能会发现有时拆分查询可能会提高性能


就我所见,您的查询足够简单,可以在一个查询中进行连接,并且可以顺利完成。

对于问题中的简单查询,让数据库进行连接。这是毫无疑问的

可能会对更复杂的查询进行一些讨论,但数据库是为处理大量数据而设计的。在应用程序中复制数据库工作的尝试不存在

也就是说,在某些情况下,数据库优化器/引擎确实会感到困惑。在这种情况下,可能需要创建临时表或在应用程序中执行工作。这不是好事,而是现实


让应用层做应用层最擅长的事情。让数据库做数据库最擅长的事情,这当然包括处理数据。

在我看来,一次输入一次输出要好得多。只做一个选择更有效。对两个选项进行基准测试。好的,干杯,这就是我的想法,但这意味着如果有30条评论,我的回复中的每一行似乎都有它所属帖子的重复信息。这是否意味着每次拉取一条评论时都会拉取所有信息?@meagar是正确的。虽然我相信“一次旅行”,但它确实取决于几个因素(数据库速度、与数据库的连接、结果集的大小(尤其是您可能检索到的重复信息的大小))。还提供数据库连接。等等。你应该对它进行基准测试。当我执行一个大型查询时,返回中的每一行都包含评论信息,以及父帖子的信息,因此如果我在同一帖子下有30条评论,那么帖子信息会重复30次。这个信息被不必要地拉了三十次吗?那么要么是数据库设计问题,要么这些查询不需要分开。使用较少的查询总是一个好主意,但这并不意味着我们每次都能做到。好的,谢谢。我要开始做基准测试,看看什么最合适。上述语句是实际任务的简化版本,将跨越5个或6个表