Обновить большой набор данных - PullRequest
1 голос
/ 16 января 2020

Я могу загрузить файл csv с 3000 записями, но когда я пытаюсь обновить, это занимает много времени, что приводит к ошибке времени ожидания запроса.

INSERTION:

$sqlInsert = "INSERT ignore into datanyc (`Symbol`,`Data_date`,`Open`,`High`,`Low`,`Last`,`Volume`)
                values ('".$column0."','".$dataDate."','".$column[2]."','".$column[3]."',
                '".$column[4]."','".$column[5]."','".$column[6]."')";                       

Оператор UPDATE:

$date_query="SELECT max(Data_date) as Prev_date FROM datanyc WHERE Data_date < '$dataDate' ";
$date_result=mysqli_query($con,$date_query);
$fetch=mysqli_fetch_array($date_result);
$Prevdate=$fetch['Prev_date'];
$temp="SELECT Last as last, Symbol as symbol FROM datanyc WHERE Data_date = '$Prevdate'";
$date1=mysqli_query($con,$temp);
while($row=mysqli_fetch_array($date1))
{
    //array_push($symbol,$row['symbol']);
    //array_push($last,$row['last']);
    $qry="UPDATE datanyc SET Prevclose = '".$row['last']."' WHERE Symbol LIKE '".$row['symbol']."' AND Data_date= $dateDate";
    mysqli_query($con,$qry);
    //$date=$row['max(Data_date)'];
}

1 Ответ

0 голосов
/ 16 января 2020

Во-первых, добавьте индекс по столбцам Symbol и Data_date,

Во-вторых, измените ваши запросы на обновление на один запрос, чтобы вам не нужно было обновлять в l oop, например так:

$sql = "UPDATE
          datanyc AS a
        INNER JOIN datanyc b ON a.symbol = b.symbol
                     AND b.Data_date = '$Prevdate'
        SET a.Prevclose = b.last";
$date1 = mysqli_query($con, $sql);
...