Cfquery または Struct をループしますか?
-
03-10-2019 - |
質問
いくつかのデータを取得するクエリがあります。そのデータを異なるdivタグでいくつかの条件を考慮して表示したいと考えています。今、私の質問は、クエリを一度ループし、3つの異なる構造体でデータを取得し、表示中にこれらの構造体を使用することでこれを行っています。これは、各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
解決
質問を少し編集して、例を挙げる必要があると思います。
ループが少ないことは常に最良のアプローチです:)必要でない場合は、より少ない変換が最善のアプローチです:)
あなたのデータが1つのクエリにある場合、複数回ループする必要はありません、私は推測します...
他のヒント
最善のアプローチは常に、特定の問題によって異なります。
ループの反復が少ないと常にパフォーマンスが向上しますが、読みやすさを向上させるためにパフォーマンスをある程度犠牲にしても許容される場合もあります。
通常、メンテナンスコストはソフトウェアの中で最も高価な部分であるため、コードを読みやすくすることには価値があります。
この特定のケースでは次のようになります。
そうでない限り、
getAttributes
クエリの結果は異常に大きく(10000行を超えるなど)、このページは異常に頻繁にロードされます(1回以上/秒など)、おそらくあなたがそれをループする回数を顕著に違いはありません。いずれにしても、どちらのオプションでもまったく同じ時間がかかります。最初のオプションはクエリを 2 回ループします。2 番目のオプションでは、クエリを 1 回ループして 2 つの構造体を設定します。その後、表示コードが生成された各構造体 (結合された構造体はクエリの行数と同じ数の要素を持ちます) をループし、合計の反復回数が正確に同じになります (に相当
getAttributes.recordcount*2
).クエリ結果をさまざまな構造体に分割するコードはやや特殊であるため、可読性が低下し、メンテナンス コストが増加します。実際にパフォーマンスが向上するわけではないため、完全に逆効果であるため、使用しないでください。