我使用ColdFusion进行开发,想知道什么是遍历大型查询结果集的最佳策略。使用cfloop和cfoutput之间有任何性能差异吗?如果没有,是否有任何理由要优先于另一个?

最佳答案

我相信曾经有过。我认为这种差异已得到解决,最好的选择是针对每个测试来测试您的特定用例。

<cfset t = GetTickCount()/>
<cf... query="qry">
  <!--- Do something --->
</cf...>
<cfset dt = GetTickCount() - t/>
<cfdump var="#dt#"/>
<!---
If the differences are small you can use java.lang.System.nanoTime() instead
--->

虽然有一些显着差异。 cfoutput可以执行分组循环,而cfloop不能。
<cfoutput query="qry" group="col">
  <!--- Loops once for each group --->
  <cfoutput>
    <!--- Loops once for each record within the group --->
  </cfoutput>
</cfoutput>

对于cfoutput,您可以指定startrowmaxrows(或计数)来分页结果。对于cfloop,您必须指定endrow索引而不是计数。

同样,您不能将cfoutput用于嵌套在现有cfoutput标记内的查询,您需要首先结束包含的cfoutput

关于coldfusion - cfloop vs cfoutput查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12782894/

10-11 16:25