我使用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
,您可以指定startrow
和maxrows
(或计数)来分页结果。对于cfloop
,您必须指定endrow
索引而不是计数。同样,您不能将
cfoutput
用于嵌套在现有cfoutput
标记内的查询,您需要首先结束包含的cfoutput
。关于coldfusion - cfloop vs cfoutput查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12782894/