Pourquoi utiliser la méthode GetOrdinal () du SqlDataReader
Quelle est la différence entre la lecture d'une valeur à partir d'un SqlDataReader en utilisant cette syntaxe:
Dim reader As SqlClient.SqlDataReader
reader("value").ToString()
OU
Dim reader As SqlClient.SqlDataReader
reader.GetString(reader.GetOrdinal("value"))
source d'informationauteur Tesseract
Vous devez vous connecter pour publier un commentaire.
Je pense que la raison de l'utilisation GetOrdinal() est de sorte que vous pouvez mettre en cache le résultat et de le réutiliser plusieurs fois pour la performance.
E. g.
GetOrdinal
effectue une recherche respectant la casse en premier. Si elle échoue, une deuxième de la casse de la recherche est faite.GetOrdinal
est kana-largeur insensible.Parce que ordinale basé sur les recherches sont plus efficaces que les nommée recherches, il est inefficace pour appelerGetOrdinal
l'intérieur d'une boucle. Gagnez du temps en appelantGetOrdinal
une fois et d'affecter les résultats d'une variable de type entier pour une utilisation à l'intérieur de la boucle.Source: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getordinal.aspx
Je veux juste ajouter que le contexte de la façon dont de nombreux dossiers vous attendent joue un grand rôle, parce que si vous êtes de retour d'une seule ligne, puis différence de performance entre ces deux-là ne serait pas significative. Toutefois, si vous êtes en boucle sur de nombreuses lignes, puis en utilisant tapé accesseur est mieux pour la performance car il est optimisé. Donc, dans ce cas, si vous avez besoin pour obtenir de meilleures performances en utilisant un nom de colonne, puis appel GetOrdinal une fois, la mettre dans une variable, puis utiliser tapé accesseur avec l'ordinal de colonne dans votre boucle. Ce serait de produire la meilleure performance.
si vous êtes curieux de connaître la différence de performances découvrez mon blog
Votre kilométrage peut varier, mais...
Plus le nombre de lignes extraction, plus d'une amélioration de la performance, vous verrez. J'aime utiliser les alias de colonne dans mon SELECT, comme
et nous avons écrit une méthode, devrait être auto-explicatif,
Alors, mes missions ressembler
Dictionnaires exécuter à proximité de O(1); donc, c'est un compromis raisonnable entre la performance et la facilité de maintenance.