如何优化在c#react中执行查询的时间

Posted

技术标签:

【中文标题】如何优化在c#react中执行查询的时间【英文标题】:how to optimize the time in executing the query in c# react 【发布时间】:2021-05-28 17:53:25 【问题描述】:

我是 React 的新手,也是 Web API 的新手。我正在通过 Web API 传递的值在反应前端的制表器中上传数据。我通过 getReports 函数传递值,如下所示:

[HttpPost]
[Route("GetReports")]
public IHttpActionResult GetReports(string jwt, List<object> data)

    if (!Common.VerificationToken.VerifyJWToken(jwt))
    
        return null;
    
    var to = data[0];
    var from = data[1];
    DateTime toDate = Convert.ToDateTime(to);
    DateTime fromDate = Convert.ToDateTime(from);

    var ReportData = db.T_CQL_COIL_DESC.Where(t => t.CCD_CREATED_ON >= toDate && 
        t.CCD_CREATED_ON <= fromDate).ToList();




    ReportsDTO dto = new ReportsDTO();
    List<ReportsDTO> ReportDTO = new List<ReportsDTO>();
    try
    
        foreach (var report in ReportData)
        
            List<vehicledetail> vehicle = new List<vehicledetail>();
            var imgurl = "https://firebasestorage.googleapis.com/v0/b/tsl-coil-qlty- 
            monitoring-dev.appspot.com/";
            dto = new ReportsDTO();
            dto.Type = report.CCD_OP_TYPE;
            dto.ID = report.CCD_COIL_ID;
            vehicle = GetVehicleID(dto.ID);
            vehicledetail vehicledetails = vehicle[0];
            dto.vehicleno = vehicledetails.vehicleno.ToString();
            dto.wagonno = vehicledetails.wagonno.ToString();
            dto.Active = report.CCD_ACTIVE;
            dto.ImgURL = report.CCD_IMAGE_URL != null ? imgurl + report.CCD_IMAGE_URL : "NA";
            dto.Desc = report.CCD_VIEW_DESC != null ? report.CCD_VIEW_DESC : "NA";
            ReportDTO.Add(dto);
        

        return Ok(ReportDTO);
    
    catch (Exception ex)
    
        return Content(HttpStatusCode.NoContent, "Something went wrong");
    



vehicledetail 中的数据 vehicledetails = vehicle[0];正在从此函数中填充:

public List<vehicledetail> GetVehicleID(string coilID)

    List<vehicledetail> vehicle = new List<vehicledetail>();
    vehicledetail vehicledetails = new vehicledetail();

    string oradb = Utilities.STAR_DB;
    OracleConnection conn = new OracleConnection(oradb);


    string query = "SELECT a.Vbeln, b.WAGON_NO FROM sapr3.lips a, sapr3.ZVTRRDA b WHERE 
    a.MANDT='600' AND a.CHARG='" + coilID + "' AND a.LFIMG > 0 AND a.MANDT = b.MANDT AND 
    a.VBELN = b.VBELN";


    OracleDataAdapter da = new OracleDataAdapter(query, conn);
    conn.Open();
    DataTable dt = new DataTable();
    da.Fill(dt);

    foreach (DataRow row in dt.Rows)
    

        vehicledetails.vehicleno = row["VBELN"].ToString();
        vehicledetails.wagonno = row["WAGON_NO"].ToString();
    

    conn.Close();
    vehicle.Add(vehicledetails);

    return (vehicle);


工作正常,但加载以下数据需要 30 秒:

如何优化这个。请帮忙。注意:上传此数据需要 30 秒

【问题讨论】:

附带说明,尝试使用参数化查询。使用字符串连接构建数据库查询可能是——而且通常是——一个漏洞。 你能举个例子吗 【参考方案1】:

撇开其他几件事不谈,主要问题似乎是您要查询每辆车的数据库。

    在这种特殊情况下,最好选择所有车辆 ID 并全部查询。

    var vehicleIds = reportData.SelectMany(t => t.ID);

然后,您可以形成一个查询,将所有车辆详细信息汇总在一起。这将减少数据库调用的次数,并可能对时间产生巨大影响。

    要检查的另一件事是是否在数据库中的车辆 ID 列上创建了任何索引,因为这也可能有助于加快处理速度。

【讨论】:

你能举一个代码中给出的例子吗

以上是关于如何优化在c#react中执行查询的时间的主要内容,如果未能解决你的问题,请参考以下文章

如何优化这个 MySQL 查询

如何优化这个 sql 查询(内连接)

如何迭代优化 MySQL 查询?

如何优化执行嵌套在 group-by 子句中的计数的 SQL 查询?

如何优化复杂计算查询的执行时间?

如何优化 sql 查询以避免在没有 php.ini 或设置时间限制的情况下执行最长时间 [关闭]