Hallo,
gerade muss ich mich mit einer Tabelle herumärgern, deren Design gerade umgestellt wird.
was wohl schon lange überfällig ist. Das Design sieht mal selten dämlich aus.
Sie umfasst etwa 3 Mio Datensätze (insgesamt 150MB), sodass es sehr auffällt, wie langsam die Update Queries bearbeitet werden, obwohl auf c5id ( INT (7) ) im WHERE clause ein Index gesetzt wurde.
Langsam. Mich kommt das verdammt schnell vor.
$query='SELECT c5id,cs FROM data5;';
Ist c5id eindeutig?
$res=mysql_query($query);
for($i=0;$i<mysql_num_rows($res);$i++)
Sind das dann 3 Millionen einzelne Updateanweisungen. Wow!
Wieviele Spalten können da vorkommen?
{
$c5id=mysql_result($res,$i,'c5id');
$cs=mysql_result($res,$i,'cs');
$query="UPDATE data5 SET ".$cs[0].$cs[1]."=1,".$cs[2].$cs[3]."=1,".$cs[4].$cs[5]."=1,".$cs[6].$cs[7]."=1,".$cs[8].$cs[9]."=1 WHERE (c5id='$c5id') LIMIT 1;";
Laut Deinen Angaben ist cs VARCHAR(6), dafür wird munter auf das siebte bis zehnte Zeichen zugegriffen. Nett. Gibt das keine Fehlermeldung?
Wieviele dieser Spalten gibt es nun und wieviele Zeichen kann cs enthalten?
Tipp: Die Designänderung sollte schnellstmöglich erfolgen und vernünftig ausfallen.
Vinzenz