【发布时间】:2015-07-22 13:00:21
【问题描述】:
我正在使用 .Net 4.5 Framework 开发 Web 应用程序。我正在从 oracle 数据库中的表中填充网格视图。该表很大,有近 73,000 条记录,每条记录有 5 列。加载表的响应时间约为 4 分钟。我目前正在使用 ADO.Net 的连接架构方法进行填充。我想要一种减少响应时间的方法。
检索代码
public DataTable RetrieveManufacturerDetails() {
try {
OpenDBConnection();
objDataTable = new DataTable();
objTrans = objCon.BeginTransaction();
objCommand = new OracleCommand("SP_GET_MANUFACTURER_DETAILS", objCon);
objCommand.CommandType = CommandType.StoredProcedure;
objCommand.Parameters.Add("cManufacturer", OracleType.Cursor).Direction = ParameterDirection.Output;
objCommand.Transaction = objTrans;
objDataAdapter.SelectCommand = objCommand;
objDataAdapter.Fill(objDataTable);
objTrans.Commit();
return objDataTable;
} catch (Exception Ex) {
objTrans.Rollback();
throw Ex;
} finally {
objCommand.Dispose();
objCon.Close();
}
}
存储过程:
create or replace PROCEDURE SP_GET_MANUFACTURER_DETAILS(cManufacturer OUT sys_refcursor )
AS
BEGIN
OPEN cManufacturer
FOR
SELECT MANUFACTURE_CODE AS "Manufcode",
MANUFACTURE_NAME AS "Manufname",
VENDOR_ACCOUNT_GROUP AS "Ktokk",
CITY AS "City",
POST_CODE AS "Postcode"
FROM MATERIAL_MANUFACTURE_INFO ;
END SP_GET_MANUFACTURER_DETAILS;
【问题讨论】:
-
您能否提供您的代码示例并解释数据库结构?例如,查询是否使用索引字段进行搜索?
-
73k 5 列记录对于 oracle 来说并不大,正如@GrandMasterFlush 所说,表定义、代码等。
-
也许尝试不要一次加载所有 73k,请参阅 this post 了解一些想法。
-
我已经添加了上面的代码和存储过程。抱歉,它没有正确对齐
-
首先要检查的是延迟是否在数据库查询、数据表填充或将数据表内容添加到网格视图中。我怀疑是网格视图。
标签: oracle gridview datagridview plsql sys-refcursor