Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mengapa OracleDataAdapter.Fill() Sangat Lambat?

Kode ini membantu saya, coba:

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

Triknya sejalan (coba nilai dari 8 hingga 64 untuk menemukan yang terbaik untuk kasus Anda):

comm.FetchSize = comm.FetchSize * 16;

PEMBARUAN:

Berikut adalah kode yang ditingkatkan:

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

Dari di sini



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DBMS_LOB.SUBSTR() melempar buffer string karakter kesalahan terlalu kecil

  2. ORA-00060:kebuntuan terdeteksi saat menunggu sumber daya

  3. Memetakan data kolom ke suatu nilai (Oracle)

  4. Kesalahan Keluaran Fiddle SQL

  5. Kolom identitas Oracle dan masukkan ke pilih