Sviluppo utilizzando ColdFusion e volevo sapere qual è la strategia migliore per eseguire il loop su set di risultati di query di grandi dimensioni. C'è qualche differenza di prestazioni tra l'utilizzo di cfloop e cfoutput? In caso contrario, c'è qualche motivo per preferire uno rispetto all'altro?cfloop vs cfoutput su query
risposta
Credo che ci fosse. Penso che questa differenza sia stata affrontata, la soluzione migliore è fare un test per ognuno di voi per testare il caso specifico.
<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
--->
Tuttavia ci sono alcune differenze notevoli. cfoutput
può fare loop raggruppati, che non è possibile fare cfloop
.
<cfoutput query="qry" group="col">
<!--- Loops once for each group --->
<cfoutput>
<!--- Loops once for each record within the group --->
</cfoutput>
</cfoutput>
Per cfoutput
è possibile specificare il startrow
e la maxrows
(o il conteggio) per impaginare il risultato. Per cfloop
devi specificare l'indice endrow
invece del conteggio.
Inoltre, non è possibile utilizzare cfoutput
per una query nidificata all'interno di un tag cfoutput
esistente, è necessario terminare prima il contenitore contenente cfoutput
.
Non ci sarebbe una differenza di prestazioni usando entrambi i metodi, dipende davvero dallo stile di codifica. Se metti un <cfoutput>
nella parte superiore e inferiore di ogni pagina, allora usando <cfloop>
funzionerà benissimo. Se si utilizza più <cfoutput>
e si utilizza solo il punto in cui sono necessari.
Io personalmente inserisco <cfoutput>
solo dove sono necessari, ma non direi che è più corretto di posizionarli nella parte superiore e inferiore della pagina.
Hai dimenticato di menzionare la possibilità di essere in grado di utilizzare group = "" solo con cfoutput (Railo 4 consente il loop di gruppo). – Busches
credo che sia lo stesso come le prestazioni, Ben Forta
E il resto è più o meno preferenze personali quanto come "tipo" di lavorare con il vostro ciclo. Tieni presente che devi sempre definire l'ambito delle variabili, ma all'interno di un ciclo cfoutput che sarebbe particolarmente importante poiché i campi di query "potrebbero" essere referenziati senza fare riferimento al loro ambito.
un motivo per cui si potrebbe preferire l'approccio cfloop sarebbe se fosse necessario "sfuggire" cfoutput durante il ciclo per qualsiasi motivo. Ho incontrato diverse volte, quindi generalmente preferisco cfloop.
Un buon motivo per utilizzare cfloop invece di cfoutput è se è necessario eseguire il ciclo di un output di query all'interno di un altro output di query. Cfoutput non supporta l'output di query nidificate. Puoi comunque farla franca usando cfloops. Quindi:
<cfoutput query="test1">
#test1ID#
<cfoutput query="test2">
#test2ID#
</cfoutput>
</cfoutput>
non funziona, ma se si sostituisce il cfoutputs con cfloops, lo farà.
A partire da CF10, con la possibilità di raggruppare cfloops, questa è l'unica differenza funzionale rimanente. Entrambi si comportano allo stesso modo.
- 1. Come ottenere un nome di attributo dinamico in cfloop su query in ColdFusion
- 2. JOIN query vs più query
- 3. query PDO vs esecuzione
- 4. CF - QoQ vs Query
- 5. TUTTI gli operatori VS Qualsiasi su una query vuota
- 6. Crystal Reports vs. SQL Query
- 7. Utilizzare la funzione count() nella query ColdFusion della query
- 8. di query nidificate vs unisce
- 9. mysql union vs più query
- 10. Hibernate Query vs criteri di prestazione
- 11. Solr Filter Query - String vs. Int
- 12. Google Appengine NDB antenato vs query chiave
- 13. Query vs Filtri - ordine di esecuzione
- 14. Sintassi query LINQ .NET vs catena metodo
- 15. SQLite3 query optimization join vs subselect
- 16. CodeIgniter Active Record vs query regolari
- 17. MySQL Stored Procedure vs. query complessa
- 18. LLMNR su Windows vs Zeroconf vs. Bonjour
- 19. NSThread vs. NSOperationQueue vs. ??? su iPhone
- 20. Query creata da Query restituita da cfspreadsheet che non presenta valori corretti
- 21. Perché ColdFusion aggiunge spazi bianchi quando chiamo una funzione in cfoutput?
- 22. MongoDB - Query su campo nidificato con indice
- 23. Cloop nidificato con meno record del ciclo esterno causa errore "indice di matrice fuori intervallo"
- 24. Ottimizzazione dataTime su query linq
- 25. esegue query sql su DataTable
- 26. Query chiavi multiple su Firebase
- 27. Query SQL su due connessioni?
- 28. NHibernate Query su più tabelle
- 29. Confronto tra le query CQL vs Spark/Shark di Cassand vs Hive/Hadoop (versione DSE)
- 30. Perchè una query con parametri produce notevolmente più lento piano di query vs di query senza parametri
In ColdFusion 10 ora è possibile eseguire l'output raggruppato. – ale
Bello, suppongo che intenda raggruppato cfloops http://www.bennadel.com/blog/2359-ColdFusion-10-Using-The-Group-Attribute-With-CFLoop-To-Group-Query-Rows.htm –
Lo stesso vale per Railo 4.0 –