Mam dość spory problem z czasem wykonania zapytania.
Kod jest taki:
<?php try{ $pdo = new PDO('mysql:host=localhost;dbname=logs', 'root', '*******'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $k=1; $zap = $pdo->query('SELECT agent FROM logs limit 100'); foreach($zap as $row){ $update='UPDATE logs SET browser=\''.$tab1[0].'\', browser_version=\''.$tab1[1]. '\'WHERE id=\''.$k.'\''; $upd = $pdo->exec($update); }else { $update='UPDATE logs SET browser=\''.$tab1[0].'\', browser_version=\'-\'WHERE id=\''.$k.'\''; $upd = $pdo->exec($update); } $k++; } $zap->closeCursor(); } catch(PDOException $e){ } ?>
Generalnie są to logi serwera apache i pod agent znajduje się długi ciąg znaków na którego początku znajduje się przeglądarka i wersja, którą chce je wsadzić do osobnych kolumn. No i pojawia się problem bo 100 rekordów się robi ok. 9 sekund, a baza danych ma ich ponad 800 tys.
Czy jest jakaś możliwość przyspieszenia tego zapytania. id jest ustawiony jako klucz główny więc indeksów za bardzo nie widzę żeby wstawiać.