sql >> Databasteknik >  >> RDS >> Oracle

Varför är OracleDataAdapter.Fill() mycket långsam?

Den här koden hjälpte mig, prova den:

using (OracleConnection conn = new OracleConnection())
{
     OracleCommand comm = new OracleCommand();
     comm.Connection = conn;
     comm.FetchSize = comm.FetchSize * 16;
     comm.CommandText = "select * from some_table";

     try
     {
          conn.Open();
          OracleDataAdapter adap = new OracleDataAdapter(comm);
          System.Data.DataTable dt = new System.Data.DataTable();
          adap.Fill(dt);
     }
     finally
     {
          conn.Close();
     }
}

Tricket är i linje (prova värden från 8 till 64 för att hitta det bästa för ditt fall):

comm.FetchSize = comm.FetchSize * 16;

UPPDATERING:

Här är en förbättrad kod:

OracleConnection myConnection = new OracleConnection(myConnectionString);
OracleCommand myCommand = new OracleCommand(mySelectQuery, myConnection);
myConnection.Open();
using (OracleDataReader reader = myCommand.ExecuteReader(CommandBehavior.CloseConnection))
{
    // here goes the trick
    // lets get 1000 rows on each round trip
    reader.FetchSize = reader.RowSize * 1000;

    while (reader.Read())
    {
        // reads the records normally
    }
}// close and dispose stuff here

Från här



  1. Kan inte ansluta till den lokala MySQL-servern via sockeln '/var/mysql/mysql.sock' (38)

  2. Distribuera Django-applikationen utan tjänstavbrott / ingen driftstopp

  3. Frågar efter en "körning" av på varandra följande kolumner i Postgres

  4. Hur man hämtar exakt matchande poster i Spring JPA @Query