ColdFusionを使用して開発したもので、大きなクエリ結果セットをループする最良の方法は何かを知りたかったのです。 cfloopとcfoutputの間にパフォーマンスの違いはありますか?そうでない場合は、どちらか一方を優先する理由がありますか?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
にする必要があります。
いずれの方法でもパフォーマンスの差はなく、実際にはコーディングスタイルによって異なります。 <cfoutput>
を各ページの上部と下部に配置すると、<cfloop>
を使用すると効果的です。複数の<cfoutput>
を使用し、必要な場所だけが機能する場合
私は個人的には、必要な場所にのみ<cfoutput>
を入れていますが、ページの上部と下部に配置するよりも正しいとは言いません。
cfoutputでgroup = ""を使用できることには言及していません(Railo 4ではgroup onループが可能です)。 – Busches
私はそれは、Ben Forta
パフォーマンスなど、すべて同じだと信じて、残りは限りどのようにあなたがループを操作する「のような」など、かなり個人的な好みです。常に変数をスコープする必要がありますが、クエリーフィールドはスコープを参照せずに参照できるため、特に重要なcfoutputループの内側にあることに注意してください。
何らかの理由でループ中にcfoutputを "エスケープ"する必要がある場合には、cfloopアプローチを使用することをお勧めします。私はそれを数回実行しています。だから、私は一般的にcfloopを好む。
cfoutputの代わりにcfloopを使用する理由の1つは、別のクエリ出力内でクエリ出力をループする必要がある場合です。cfoutputはネストされたクエリ出力をサポートしていません。しかし、cfloopsを使ってそれを取り除くことができます。だから、:
<cfoutput query="test1">
#test1ID#
<cfoutput query="test2">
#test2ID#
</cfoutput>
</cfoutput>
は動作しませんが、あなたはcfloopsとcfoutputsを交換した場合、それはなります。
CF10では、cfloopsをグループ化することができますが、これは唯一の機能上の相違点です。彼らはどちらも同じことをします。
- 1. クエリーのcfloopとクエリ
- 2. cfoutput内のcfoutput
- 3. cfquery内のcfoutputクエリ結果
- 4. 複数の値をデータベースに格納するためのCFloopクエリ
- 5. CFLOOP timeotエラー問題
- 6. cfoutput内のcfml変数
- 7. POSTを使用して別のページでcfoutputクエリを実行しますか?
- 8. ColdFusion cfdump/cfoutputがクエリアナライザの結果と一致しません
- 9. Cfoutputから抜け出す方法
- 10. cfloopからSQLの整数値を合計
- 11. グループはcfoutputではなくsqlコード内にあります
- 12. cfloopでフィールド名に変数を使用する
- 13. Flexの<cfoutput>に相当するものは何ですか?
- 14. coldfusionで< cfloop>の配列値を追加する方法は?
- 15. ColdFusion - UDFから生成されたクエリーを使用するcfloopの参照変数
- 16. jqueryのタブでcoldfusionクエリを呼び出す方法
- 17. x = trueの場合<cfloop>の最初の配列位置に項目を移動
- 18. ColdFusionを使用してCharts.jsで使用するためにクエリを繰り返し処理する
- 19. 挿入アンカーが行我々は、部分的に、動的に使用して生成されたスケジュールを持っている現在の日付
- 20. IE6のテーブルに不要な空白を追加するcfloopを修正しましたか?
- 21. 2次元配列をループする方法は?
- 22. MongoDBのクエリと
- 23. MySQLの通常のクエリと他のクエリとの異なる結果のクエリ
- 24. JOINクエリと複数のクエリの比較
- 25. SPARQLのクエリとしてのリテラルCONSTRUCTクエリ
- 26. テーブルのクエリとクエリの削除アクセスVBA
- 27. MYSQLクエリ速度(検索クエリとクエリ)
- 28. ColdFusion:名前に変数を含むRecordCountを取得する
- 29. MsSQLクエリと同等のMySQLクエリ(CREATE用)
- 30. ストアドプロシージャのクエリと異なるクエリ結果
ColdFusion 10では、グループ化された出力を行うことができます。 – ale
ニース、グループ化されたcfloopsを意味します。http://www.bennadel.com/blog/2359-ColdFusion-10-Using-The-Group-Attribute-With-CFLoop-To-Group-Query-Rows.htm –
同じことがRailo 4にも適用されます。0 –