2012-10-10 4 views
-3

Possible en double:
Is datareader quicker than dataset when populating a datatable?Lequel courra plus vite?

public DataTable GetReviewsId(Objects myObjects) 
{ 
    DataTable tblBindReviews = new DataTable(); 
    string Query = ""; 
    try 
    { 
     Query = "select distinct ProductId from tblReview where ProductId in (select ProductId from tblProduct where R=0 and T=0)"; 
     /*SqlConnection mySqlConnection = this.SetDatabaseConnection(); 
     SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(Query, mySqlConnection); 
     mySqlDataAdapter.Fill(tblBindReviews);*/ 
     /*mySqlConnection.Open(); 
     SqlCommand cmd = new SqlCommand(Query,mySqlConnection); 
     tblBindReviews.Load(cmd.ExecuteReader());*/ 
    } 
    catch (SqlException ex) 
    { 
     throw new Exception(ex.Message); 
    } 
    finally 
    { 
     this.ClosedatabaseConnection(); 
    } 
    return tblBindReviews; 
} 

Dans le code ci-dessus je l'ai écrit deux façons (chacun à l'intérieur de la partie commentée) de récupération de données, un à l'aide de l'adaptateur de données et l'autre utilisant le lecteur de données. lequel des deux fonctionnera le plus vite?

+14

Pourquoi ne pas essayer vous-même? – sloth

+2

Avez-vous exécuté un test sur votre ensemble de données d'exemple? 'System.Diagnostics.Stopwatch' est votre ami pour ces types de questions. – jheddings

+0

Qu'est-ce qui vous fait penser qu'il y a même une différence entre les deux options? –

Répondre

3

DataReader est le moyen le plus rapide. Dans tous les cas plus rapide alors que DataAdapter DataAdapter utilise DataReaders à l'intérieur et effectue des opérations supplémentaires (fonctionne avec des ensembles de données multiples tables, .....)

DbDataAdapter - FillInternalMethod

+1

Comment pouvez-vous faire cette réclamation compte tenu de la simplicité de la requête? –

1

Si vous exécutez select operations i vous suggets d'utiliser SqlDataReader

n'a qu'un seul enregistrement en mémoire à la fois plutôt que d'un ensemble des résultats

est à peu près aussi vite que vous pouvez obtenir pour cette une itération

Permet de commencer les résultats de traitement plus tôt

Nota:

Avec SqlDataAdapter vous avez l'utilisation de mémoire beaucoup plus élevé, vous attendez jusqu'à ce que toutes les données sont chargées avant d'utiliser ce

Questions connexes