一篇文章和评论SQL查询 - 高效

时间:2010-04-23 13:27:19

标签: php sql

获取文章和评论的最有效和最有效的SQL查询是什么?

这是两个表(文章,评论。)最好将它放在一个SQL查询或两个SQL查询中吗?速度是主要关注点。

提前致谢

6 个答案:

答案 0 :(得分:1)

根据您的记录的使用量而言,不管是一个查询还是两个查询,都不会有明显的差异,如果完全可以忽略不计。

就个人而言,如果它可以在一个查询中完成并且您不必牺牲可读性,我会选择一个查询。作为一个提醒,我会在担心性能的时候担心性能。

答案 1 :(得分:0)

在这里做了很多假设,但......

通常,您可以通过一个带有连接的查询来获得最佳性能。如果数据库和服务器之间的带宽非常有限,并且每个连接有很多注释(可能是极少数情况),您可能会发现两个查询的性能优于单一查询解决方案。

答案 2 :(得分:0)

使用JOINS来完成此任务,JOINS比编写2个查询更快。 你可以做这样的事情

SELECT article, comment FROM tbl_article JOIN tbl_comment WHERE tbl_comment.article_id=tbl_article.id

考虑到你在tbl_article上有主要字段ID,在tbl_comment上有article_id。如果你使用article_id,外键将是gr8

答案 3 :(得分:0)

特别是如果您的数据库与Web应用程序位于不同的物理服务器上(或者正在执行任何操作)可能会导致两个服务器之间的简单网络延迟成为问题(即,来自一台服务器的ping时间)到另一个可能以毫秒为单位,而查询本身可能在 micro 秒内执行。)

我认为最有效的解决方案是将两个查询放在存储过程中并执行它。只有一次往返数据库,不需要连接和显示结果所需的最小数据返回给客户端。此外,您将获得查询参数化,并且存储过程的查询计划将更有可能缓存在服务器中。

答案 4 :(得分:0)

很难想象任何较少细节的问题比你提供的更详细,但我会尝试回答一般问题。

如果您使用的是现代关系数据库管理系统(MySQL等),您应该期望数据库本身最好地了解如何从中获取信息。因此,您应该将几乎所有查询作为单个查询提交给数据库,并让它确定将数据返回给您的最佳计划。

如果您指示数据库索引用于加入数据的字段,则数据库将表现最佳;如果您发现性能不佳,大多数数据库引擎都会提供一个选项,让引擎解释用于检索信息的计划,并根据该计划改进索引。

对于频繁请求(如此),最好将查询作为VIEW(存储的查询定义)封装在数据库中,并直接查询视图而不是表。

答案 5 :(得分:0)

某些平台允许您通过一次往返数据库来运行多个查询。

在ADO .Net中的IE,你可以运行:

SELECT col1, col2, whatever from Articles WHERE id=xxx
SELECT colx, coly, colz from comments where arcticle_id=xxx

并获取包含两个数据表的数据集。