как оптимизировать время выполнения запроса в c# react

#c# #sql #reactjs #asp.net-web-api #webapi

Вопрос:

Я новичок в реагировании и новичок в веб-API. Я загружаю данные в табулятор в интерфейсе react из значения, которое я передаю через веб-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 amp;amp; 
        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 в vehicledetail vehicledetails = транспортное средство[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. Кроме того, попробуйте использовать параметризованные запросы. Построение запроса БД с использованием конкатенации строк может быть — и часто является — уязвимостью.

2. можете ли вы привести пример этого

Ответ №1:

Помимо нескольких других вещей, основная проблема, по-видимому, заключается в том, что вы запрашиваете базу данных для каждого транспортного средства.

  1. В этом конкретном сценарии, возможно, было бы лучше выбрать все идентификаторы транспортных средств и запросить их все.

    var Идентификаторы транспортных средств = Данные отчета.Выбор множества(t => t.ID);

Затем вы можете сформировать запрос, в котором будут собраны все сведения о транспортном средстве. Это сократит количество вызовов базы данных и может оказать огромное влияние на время.

  1. Еще одна вещь, которую следует проверить, — это наличие какого-либо индекса, созданного в столбце идентификатора транспортного средства в базе данных, поскольку это также может помочь ускорить процесс.

Комментарии:

1. можете ли вы привести пример, приведенный в коде