Tôi phát triển bằng cách sử dụng Coldfusion và muốn biết chiến lược tốt nhất để lặp qua tập kết quả truy vấn lớn là gì. Có bất kỳ sự khác biệt hiệu suất giữa việc sử dụng cfloop và cfoutput không? Nếu không, có lý do gì để thích cái này hơn cái kia không?cfloop vs cfoutput trên các truy vấn
Trả lời
Tôi tin rằng đã từng có. Tôi nghĩ rằng sự khác biệt này đã được giải quyết, đặt cược tốt nhất là làm một bài kiểm tra cho mỗi để kiểm tra trong trường hợp sử dụng cụ thể của bạn.
<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
--->
Có một số khác biệt đáng chú ý. cfoutput
có thể thực hiện các vòng được nhóm, trong đó cfloop
không thể.
<cfoutput query="qry" group="col">
<!--- Loops once for each group --->
<cfoutput>
<!--- Loops once for each record within the group --->
</cfoutput>
</cfoutput>
Đối cfoutput
bạn có thể chỉ định startrow
và maxrows
(hoặc số lượng) để đánh số trang kết quả của bạn. Đối với cfloop
, bạn phải chỉ định chỉ mục endrow
thay vì số.
Ngoài ra, bạn không thể sử dụng cfoutput
cho truy vấn được lồng trong thẻ cfoutput
hiện tại, trước tiên bạn cần phải kết thúc việc chứa cfoutput
.
Sẽ không có sự khác biệt về hiệu suất sử dụng một trong hai phương pháp, nó phụ thuộc vào kiểu mã hóa của bạn thực sự. Nếu bạn đặt <cfoutput>
ở đầu và cuối mỗi trang thì sử dụng <cfloop>
sẽ hoạt động tốt. Nếu bạn sử dụng nhiều <cfoutput>
và chỉ nơi chúng cần thiết cũng hoạt động.
Cá nhân tôi đặt <cfoutput>
chỉ khi chúng cần thiết, nhưng tôi sẽ không nói điều đó chính xác hơn là đặt chúng ở đầu và cuối trang.
Bạn quên đề cập đến khả năng chỉ có thể sử dụng nhóm = "" với cfoutput (Railo 4 cho phép nhóm trên vòng lặp). – Busches
Tôi tin rằng đó là tất cả giống như hiệu suất, Ben Forta
Và phần còn lại là khá nhiều sở thích cá nhân như xa như cách bạn "like" để làm việc với vòng lặp của bạn. Hãy nhớ rằng bạn nên luôn luôn phạm vi biến của bạn, nhưng bên trong một vòng lặp cfoutput sẽ đặc biệt quan trọng vì các trường truy vấn "có thể" được tham chiếu mà không đề cập đến phạm vi của chúng.
một lý do bạn có thể thích phương pháp tiếp cận cfloop sẽ là nếu bạn cần "thoát" cfoutput trong vòng lặp của bạn vì bất kỳ lý do gì. Tôi đã chạy vào đó nhiều lần, vì vậy tôi thường thích cfloop.
Một lý do chính đáng để sử dụng cfloop thay vì cfoutput là nếu bạn cần lặp đầu ra truy vấn trong một đầu ra truy vấn cfoutput không hỗ trợ xuất kết quả truy vấn lồng nhau. Tuy nhiên bạn có thể thoát khỏi nó bằng cách sử dụng cfloops. Vì vậy:
<cfoutput query="test1">
#test1ID#
<cfoutput query="test2">
#test2ID#
</cfoutput>
</cfoutput>
không hoạt động, nhưng nếu bạn thay thế cfoutputs bằng cfloops, nó sẽ làm việc.
Kể từ CF10, với khả năng nhóm cfloops, đó là sự khác biệt duy nhất chức năng còn lại. Cả hai đều thực hiện tương tự.
- 1. Cách lấy tên thuộc tính động trong cfloop qua truy vấn trong ColdFusion
- 2. Cách thoát khỏi Cfoutput
- 3. các truy vấn con vs tham gia
- 4. CF - QoQ vs Truy vấn
- 5. mysql union vs nhiều truy vấn
- 6. Chuẩn bị() vs truy vấn() mysqli
- 7. Truyền thông truy vấn ipad vs iphone4
- 8. Cách truy vấn đếm trên 2 cột
- 9. Sử dụng hàm count() trong truy vấn ColdFusion của truy vấn
- 10. MySQL - UPDATE truy vấn dựa trên Truy vấn SELECT
- 11. InnoDB vs. MyISAM chèn thời gian truy vấn
- 12. 2 khác nhau truy vấn nhỏ vs 1 truy vấn với subquery
- 13. Giảm thiểu các truy vấn phụ bằng truy vấn IN trên AppEngine (trăn)
- 14. Tối ưu hóa truy vấn SQLite3 tham gia vs subselect
- 15. EntitySet vs hiệu suất truy vấn Table trong LINQ2SQL
- 16. CodeIgniter Active Record vs truy vấn thường xuyên
- 17. ColdFusion - Chuyển đổi truy vấn thành các thanh toán CFC
- 18. Nhiều truy vấn VS Thủ tục lưu trữ
- 19. Cách truy cập cột truy vấn bằng nhiều từ?
- 20. Mongodb: $ trong toán tử vs nhiều truy vấn đơn
- 21. Elasticsearch "More Like This" API vs more_like_this truy vấn
- 22. Cú pháp truy vấn .NET LINQ vs chuỗi phương thức
- 23. Gỡ rối các truy vấn tìm kiếm Solr trên Sunspot
- 24. Tốc độ truy vấn dựa trên thứ tự các cột
- 25. Liệt kê các truy vấn đang chạy trên SQL Server
- 26. Nội các Tokyo vs SQLite3 trên iPhone
- 27. Truy vấn NHibernate trên nhiều bảng
- 28. ORMLite hoặc truy vấn trên nhiều bảng
- 29. Truy vấn Django trên Mô hình?
- 30. HQL truy vấn trên tiểu lớp
Trong Coldfusion 10, bây giờ bạn có thể tạo đầu ra được nhóm. – ale
Tốt, tôi lấy nó, bạn có nghĩa là nhóm cfloops http://www.bennadel.com/blog/2359-ColdFusion-10-Using-The-Group-Attribute-With-CFLoop-To-Group-Query-Rows.htm –
Tương tự áp dụng cho Railo 4.0 –