Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tại sao OracleDataAdapter.Fill () Rất chậm?

Mã này đã giúp tôi, hãy thử nó:

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

Bộ ba thẳng hàng (hãy thử các giá trị từ 8 đến 64 để tìm ra giá trị tốt nhất cho trường hợp của bạn):

comm.FetchSize = comm.FetchSize * 16;

CẬP NHẬT:

Đây là mã được cải thiện:

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

Từ tại đây



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chính xác để cấp cho người dùng quyền truy cập vào các lược đồ bổ sung trong Oracle

  2. Làm cách nào để thoát tập lệnh trong SQLPlus khi xảy ra lỗi và quay lại lời nhắc SQLPlus mà không ngắt kết nối hoặc thoát SQLPlus?

  3. Bỏ người dùng được kết nối khỏi lược đồ cơ sở dữ liệu Oracle 10g

  4. TO_DATE lỗi phân tích cú pháp múi giờ hàm

  5. Giới hạn truy vấn SQL chỉ ở hai số lượng hàng đầu cho mỗi nhóm