我有一个检索一些数据的查询。我想在不同的DIV标签中显示某些条件的数据。现在我的问题是,我正在通过循环查询一次并在显示时使用这些结构来进行此操作。这是每次DIV中每次都在查询中循环的好方法还是循环检查条件是RIRHT方法吗?

     <tr >
<td >
  features:
 </td>
 <td >
    <cfloop query="getAttributes">
      <cfif getAttributes.type_id EQ 1>
        #getAttributes.seat#<br>
      </cfif>
    </cfloop>
 </td>
</tr>
<tr>
 <td >
  Disclosures:
 </td>
 <td >
    <cfloop query="getAttributes">
   <cfif getAttributes.type_id EQ 2>
          #getTicketAttributes.seat#<br>
   </cfif>
  </cfloop>
  </td>
 </tr> 

还是我可以使用以下方法

seatStruct 
disclosureStruct 
<cfloop query="getAttributes">  
<cfif getAttributes.type_id EQ 1> 
Insert seatStruct 
<cfelseif getAttributes.type_id EQ 2> 
insert disclosureStruct 
</cfif> 
Now use these structs to display
有帮助吗?

解决方案

我认为您必须稍作编辑一些示例。

较少的循环始终是最好的方法:)如果没有必要的话,更少的转换是最好的方法:)

如果您的数据在一个查询中,那么我猜没有不需要一次循环...

其他提示

最佳方法将始终取决于您的特定问题。

尽管较少的循环迭代始终会导致性能更快,但有时为了提高可读性而牺牲某些性能是可以接受的。

维护成本通常是软件中最昂贵的部分,因此值得使您的代码易于阅读。

在这种特定情况下:

  • 除非 getAttributes 查询结果异常大(例如超过10000行),或者此页面异常加载(例如不止一次/秒),这可能不会引起明显的差异,您可以在它上循环多少次。

  • 无论如何,这两个选项都将花费完全相同的时间:第一个选项循环查询两次。第二个选项通过查询一次循环以填充两个结构,然后您的显示代码循环通过每个生成的结构(组合的元素数量与查询的数量相同),从而导致总迭代的精确数量(相当于 getAttributes.recordcount*2).

  • 将查询结果分为不同结构的代码在某种程度上是不寻常的,从而降低了可读性并增加了维护成本。由于它实际上并不能提高性能,因此完全适得其反,不应使用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top