我正在嘗試更新表中的100K行。但是查詢執行起來非常緩慢。 有些數學函數是不是在SQL,因爲使用PHP,例如asinh
如何優化MySQL更新請求?
<?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