如何优化在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中执行查询的时间的主要内容,如果未能解决你的问题,请参考以下文章