Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Dlaczego OracleDataAdapter.Fill() działa bardzo wolno?

Ten kod mi pomógł, wypróbuj go:

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();
     }
}

Trik jest w kolejce (wypróbuj wartości od 8 do 64, aby znaleźć najlepszą dla swojego przypadku):

comm.FetchSize = comm.FetchSize * 16;

AKTUALIZACJA:

Oto ulepszony 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

Z tutaj



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można pobrać wyników, przekazując dane wejściowe jako ścieżkę xml w oracle

  2. Jaki jest idealny zestaw narzędzi do programowania w PL/SQL?

  3. Muszę przechowywać kody pocztowe w bazie danych. Jak duża powinna być kolumna?

  4. Jak uzyskać wartość dbms.output zwróconą przez blok PL-SQL w C#

  5. Jak uzyskać starszą wersję OracleClient do lokalnej pracy z platformą .NET?