Voglio solo aggiungere che il contesto di quanti record vi aspettate gioca un ruolo importante, perché se si restituisce una singola riga allora differenza di prestazioni tra i due non sarebbero significative. Tuttavia, se si esegue il ciclo su più righe, l'utilizzo della funzione di accesso digitata è migliore per le prestazioni poiché è ottimizzato. In tal caso, se è necessario ottenere prestazioni ottimali utilizzando il nome di una colonna, chiamare una volta GetOrdinal, inserirla in una variabile e quindi utilizzare accessor digitato con la colonna ordinale nel ciclo. Ciò produrrebbe la migliore prestazione.
se siete curiosi di sapere la differenza di prestazioni controllare my blog post
Qualcuno ha un'idea circa l'impatto sulle prestazioni di utilizzare GetOrdinal (..) looping fila rispetto ad esempio il recupero dei dati reale dal DB? –
Ho un test delle prestazioni per un servizio API Web che legge circa 30-40 record dal DB memorizzato proc (con più set di risultati) e restituisce Json di circa 8 KB. In questo test ho sostituito tutti i GetOrdinal() con costanti int statiche e di conseguenza ho ottenuto un aumento del 2% delle prestazioni ... quindi vale la pena di creare questo tipo di cache dei nomi delle colonne? - Immagino che nella maggior parte dei casi non sia così. La lettura dei dati dal DB e la serializzazione dei dati su Json in uno scenario reale influenzerà maggiormente le prestazioni, quindi penso che il caching degli ordinali sarà l'ultima cosa da fare quando hai già ottimizzato tutto il resto ... –