Desarrollé usando ColdFusion y quería saber cuál es la mejor estrategia para recorrer un gran conjunto de resultados de la consulta. ¿Hay alguna diferencia de rendimiento entre el uso de cfloop y cfoutput? Si no, ¿hay alguna razón para preferir uno sobre el otro?cfloop vs cfoutput en las consultas
Respuesta
Creo que solía haberlo. Creo que esta diferencia se ha abordado, la mejor opción es hacer una prueba para cada uno para probar en su caso de uso específico.
<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
--->
Sin embargo, existen algunas diferencias notables. cfoutput
puede hacer bucles agrupados, que cfloop
no pueden.
<cfoutput query="qry" group="col">
<!--- Loops once for each group --->
<cfoutput>
<!--- Loops once for each record within the group --->
</cfoutput>
</cfoutput>
Para cfoutput
puede especificar el startrow
y la maxrows
(o el conteo) para paginar su resultado. Para cfloop
, debe especificar el índice endrow
en lugar del recuento.
También no puede usar cfoutput
para una consulta anidada dentro de una etiqueta existente cfoutput
, primero deberá finalizar la que contiene cfoutput
.
No habría una diferencia de rendimiento con ninguno de los dos métodos, depende realmente de su estilo de codificación. Si coloca un <cfoutput>
en la parte superior e inferior de cada página, entonces usar <cfloop>
funcionará muy bien. Si usa múltiples <cfoutput>
y solo el lugar donde se necesitan, también funciona.
Personalmente puse <cfoutput>
solo donde son necesarios, pero no diría que es más correcto que colocarlos en la parte superior e inferior de la página.
Olvidó mencionar la posibilidad de poder usar group = "" solo con cfoutput (Railo 4 permite agrupar en bucle). – Busches
creo que todo es lo mismo que el rendimiento, Ben Forta
y el resto es más o menos las preferencias personales en cuanto a la forma en que "así como" para trabajar con su lazo. Tenga en cuenta que siempre debe determinar el alcance de sus variables, pero dentro de un bucle cfoutput que sería especialmente importante ya que los campos de consulta "podrían" ser referenciados sin referirse a su alcance.
Una razón por la que preferiría que el enfoque cfloop fuera si necesitara "escapar" de la salida de cf durante su ciclo por algún motivo. Me he topado con eso varias veces, por lo que generalmente prefiero cfloop.
Una buena razón para usar cfloop en lugar de cfoutput es si necesita realizar un bucle en un resultado de consulta dentro de otra salida de consulta. Cfoutput no admite la generación de consultas anidadas. Sin embargo, puede salirse con la suya con cfloops. Entonces:
<cfoutput query="test1">
#test1ID#
<cfoutput query="test2">
#test2ID#
</cfoutput>
</cfoutput>
no funciona, pero si reemplaza las cfoutputs con cfloops, lo hará.
A partir de CF10, con la capacidad de agrupar cfloops, esa es la única diferencia funcional restante. Ambos realizan lo mismo.
- 1. EntitySet vs rendimiento de las consultas de mesa en LINQ2SQL
- 2. Cómo obtener un nombre de atributo dinámico en cfloop sobre la consulta en ColdFusion
- 3. MySQL rendimiento de las consultas dilema: enumeración vs tablas
- 4. 1.3M consultas/Hora. ¿Cómo construirías las consultas?
- 5. JPA Nombrado Consultas vs Criterios API?
- 6. Pregunta de la teoría de consultas SQL - consultas de declaración única vs consultas de declaración múltiple
- 7. MySQL sentencias preparadas vs consultas simples rendimiento
- 8. Consultas de Django - id vs pk
- 9. optimización de consultas MySQL: IN() vs O
- 10. SQL anexar las consultas
- 11. Obtiene el valor de las variables que se ejecutan en cfloop usando cfthread join
- 12. procedimientos almacenados como consultas: CallableStatement vs. PreparedStatement
- 13. ¿Cómo hacer delimitador de caracteres múltiples en Coldfusion para cfloop?
- 14. consultas MySQL vs php foreach múltiple bucles
- 15. ¿Cómo probar las consultas HQL?
- 16. Registrar todas las consultas en mysql
- 17. ¿Las consultas de medios funcionan en MediaWiki?
- 18. Queda insensible a las consultas
- 19. LINQ a las consultas XML
- 20. Las consultas heterogéneas requieren ANSI_NULLS
- 21. Rendimiento de RegEx vs LIKE en consultas de MySQL
- 22. Doctrine2: Consultas polimórficas: Buscando en las propiedades de las subclases
- 23. ¿Por qué ColdFusion agrega espacios en blanco cuando invoco una función en cfoutput?
- 24. ¿Cómo se miden las "consultas por segundo"?
- 25. ¿Cuándo se planifican las consultas (SELECT)?
- 26. Mide automáticamente todas las consultas SQL
- 27. ¿Cómo ver las consultas que hibernan?
- 28. Cómo sincronizar las consultas de Django
- 29. los resultados de varias contar las consultas
- 30. Cómo encontrar las consultas más lentas
En ColdFusion 10 ahora puede hacer una salida agrupada. – ale
Bueno, supongo que significa agrupado cfloops http://www.bennadel.com/blog/2359-ColdFusion-10-Using-The-Group-Attribute-With-CFLoop-To-Group-Query-Rows.htm –
Lo mismo aplica para Railo 4.0 –