Mailinglisten-Archive |
> > Ich habe eine Tabelle, auf die mehrere Benutzer > Zugriff haben. Jeder dieser Benutzer kann in einem > Textfeld quasi so viel schreiben, wie er möchte. > Es ist also unklar, wie viel Text jeder Benutzer > pro Datensatz einträgt. > Nun existieren bereits rund 10.000 Datensätze und > ich möchte nun den exakten Speciherplatz der > gesamten Tabelle und den der jeweiligen Benutzer > errechnen (lassen :-)). > > Ich habe im phpMyAdmin im Bereich der Tabellen- > Kann man sowas auch ganz korrekt berechnen lassen? > > Also sowas wie > SELECT WIEauchIMMER WHERE user like 'ich' -> > Ergebnis: Menge der Bytes. Hi, da Textfelder vorhanden sind, Du etwas Aufwand: ich würde mit php folgendes machen (war schon mal bei mir nötig und läuft prima): Habe ich bei mir per cronjob laufen lassen. Du solltest das mal mit genau einem Datensatz laufen lassen, um einen eventuellen Offset und Zeichenkettenende-Zeichen dazuaddieren zu können. Es gibt auch den Befehl show table status from datenbank (erst ab 3.23) wo du dann die komplette "Data_length" hast (beachte row_format fixed und dynamic) Viel Spass Robert <? // sowas braucht man define(NL,"\r\n"); define(BR,"<br>"); // Datenbank-Verbindung include( "meine-db.inc" ); // abzufragende Tabelle und Filter $table = "Inhalt" ; $filter = "WHERE id = '1234567' " ; $struktur = array(); $i = 0; $query = "SHOW fields FROM Inhalt "; $result = mysql_query( $query ) or die( $query ); while( $row = mysql_fetch_row($result) ) { list( $feldname, $feldtyp ) = $row ; $feldlaenge = ( ereg("([0-9]+)", $feldtyp, $erg ) ) ? $erg[0] : 0 ; $struktur[$i]["nam"] = $feldname ; $struktur[$i]["typ"] = $feldtyp ; $struktur[$i]["len"] = $feldlaenge ; $i++; } // Kontrollausgabe // foreach($struktur as $wert ) // { echo $wert["nam"] . " : " . $wert["typ"] . " : " . $wert["len"] . NL ; } $query = "SELECT * FROM $table $filter "; $result = mysql_query( $query ) or die( $query ); $summe = 0 ; // Alle Sätze durchgehen while( $row = mysql_fetch_array($result) ) { // für jeden Satz alle Felder abklappern foreach($struktur as $wert ) { $name = $wert["nam"] ; $lang = $wert["len"] ; if ($lang != 0) { $summe += $lang ; } else { $summe += strlen( $row["$name"] ) ; // echo $name . " (" . strlen( $row["$name"] ) . ") : " . $row[$name] . NL ; } } } mysql_close(); echo "Für die Bedingung $filter beträgt die Satzlänge in der Tabelle '$table' insgesamt $summe Byte." . NL ; ?> --- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive