首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CF - QoQ vs查询

CF - QoQ vs查询
EN

Stack Overflow用户
提问于 2012-11-30 02:25:04
回答 5查看 695关注 0票数 5

我有一个想法,调用查询的查询比从数据库中查询更快,因为慢的是cf和db之间的通信。这是真的吗。

这是否意味着循环中的QoQ是可以接受的,而循环中的查询是不可接受的?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-11-30 02:27:33

完整的DBMS针对处理适当编写的查询进行了高度优化,在现代网络上,开销不会很大。

QoQ是使用嵌入式数据库执行的,根据执行的查询类型,嵌入式数据库可能优化得很好,也可能不优化。

因此,如果数据库位于另一台机器上,并且网络速度很慢,那么在某些情况下,QoQ可能会变得不那么慢。如果您正在访问数据库,理想情况下,您希望在一个请求中适当地处理所有内容,并避免在循环中进行往返和重新处理。

当然,QoQ的一个很大的好处是,您可以使用它来处理不是来自数据库的数据-比如Of目录的结果或已转换为查询的CSV文件。

ColdFusion通过手动分析SQL,然后循环遍历记录集来执行QoQ。这使得它对于简单的操作是有效的,例如具有匹配键的两表连接,但对于复杂的组合(连接使用多列和/或不是直接的a=b比较)效率较低。(Brief info here.)

Railo使用H2。H2声称速度很快,他们的网站提供了一些speed comparisons,表明它比Derby和MySQL更快-但当然最好是寻找独立的第三方测试,更不用说这些测试不能保证QoQ的性能(例如,我怀疑这些测试不会有索引)。

通常:不需要首先进行性能测试来确定您确实需要提高性能,并且能够客观地确定哪种方法更快,否则不要做出任何艰难的决定。

票数 13
EN

Stack Overflow用户

发布于 2012-11-30 02:47:25

这取决于Coldfusion机器与数据库服务器相比的能力,以及您试图解决的问题。

对于较小的数据集,QofQ通常非常快,因为它都发生在服务器内存中。但是,如果您尝试在大型数据集上使用QofQ,您的服务器将开始出现问题,因为在内存中保存和处理该数据的开销很大。

数据库查询在大型数据集上的性能通常优于QofQ,因为这正是它们设计的目的。数据库擅长以非常快的速度处理大量数据。为此,请使用它们。

如果您正在考虑从数据库中检索大型结果集并使用QofQ对其进行解析,那么这样做可能是错误的。相反,让数据库为您减少结果。如果您经常向数据库服务器请求此信息,请将其缓存到您的服务器上。

请记住,这一切都是主观的,并且在很大程度上取决于您的特定问题、负载、数据库和服务器功能。

票数 4
EN

Stack Overflow用户

发布于 2012-11-30 02:45:32

我发现使用Q的Q可以比从查询中提取DB快得多。

例如,我忠实地在销售报告上使用QoQ。我有一个销售报告,将拉第一季度的日期范围,这可能会显示销售数字按销售代理,它也可能显示销售数字按产品销售。

在我的数据库中,出现在同一报表中的两个部分将使用相同的表/字段。

我根据日期范围查询主表中的数据,然后查询这些结果以构建报告的每个部分。

我发现这个方法在DB本地和远程的两个服务器上都更快。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13632246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档