Я пытаюсь обновить строки 100K в таблице. Но запрос выполняется очень медленно. Некоторые математические функции не в SQL, так как используется PHP, пример asinh
Как оптимизировать запрос MySQL UPDATE?
<?php
$n = pow(2, 6);
$sql = "";
$dsn = 'mysql:host=localhost;dbname=****';
$user = '****';
$password = '****';
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo $e->getMessage();
}
try {
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->beginTransaction();
$stmt = $dbh->query('SELECT id, lat FROM data');
while ($row = $stmt->fetch())
{
$idRow = $row['id'];
$latRow = $row['lat'];
$y = floor(1 - asinh(tan(deg2rad($latRow))))/2*$n;
$sql .= " UPDATE data_update";
$sql .= " SET ySet= '" . $y . "'";
$sql .= " WHERE ";
$sql .= "id = " . $idRow . "; ";
}
$dbh->exec($sql);
} catch (Exception $e) {
$dbh->rollBack();
echo $e->getMessage();
}
?>
Пожар первых 10K, а затем следующий и так далее ... –
Разбейте то, что эта формула делает и реализует в sql. – Mihai