DB verkleinern: jeden 2. Datensatz löschen
Moin!
Gibt es die Möglichkeit per SQL jeden 2. Datensatz bedingungslos zu löschen? Hintergrund: Ich logge unsere PV-Anlage alle 30 Sekunden, aber das doppelte Intervall würde reichen. Den logger kann ich einfach umstellen, ich würd halt die Tabellengröße gern halbieren. Die Tabelle sieht so aus (Ausschnitt): Code:
created kdy kmt kyr kt0 tnf tkk pac prl il1 idc ul1 udc sys Gruß lasser |
AW: DB verkleinern: jeden 2. Datensatz löschen
Die Daten sind nach dem Timestamp (1. Spalte) sortiert vermute ich mal.
Gibt es in der Tabelle noch eine andere Spalte (z. B. ein Auto_increment Primary Key) in der Tabelle? Damit könnte man dann vielleicht eine einfachere Abhängigkeit für den DELETE erstellen, als mit dem Abstand der Timestamps voneinander. Zeige doch mal Code:
mysql>SHOW CREATE TABLE tabelle1 Thomas |
AW: DB verkleinern: jeden 2. Datensatz löschen
Moin!
ok, das sieht wie folgt aus: Code:
CREATE TABLE `log` ( lasser |
AW: DB verkleinern: jeden 2. Datensatz löschen
Also ich mache "...jeden zweiten Datensatz löschen.." einfach an der Sekunde fest. Z.b. ":39". Die Suche wäre dann einfach so
Code:
Wenn dass stimmt, dann geht das löschen z.B. so.. Code:
DELETE FROM log Code:
ANALYZE TABLE log; Thomas |
AW: DB verkleinern: jeden 2. Datensatz löschen
Ah, ok. Ja, das würde gehen, wenn tatsächlich die Sekunden immer '39' wären. Sind sie aber nur in dem Ausschnitt :-(
Hm, andere Idee mit PHP und einer while-Schleife: Code:
$result = @mysql_query("SELECT * FROM `tabelle1` WHERE created BETWEEN '$start' AND '$end'") or die(mysql_error()); Code:
if($rest%n == 0) lasser |
AW: DB verkleinern: jeden 2. Datensatz löschen
Zitat:
a) Den DELETE nicht vergessen b) Den INSERT Befehl mal im Handbuch nachschauen c) Am Besten auf den @ vor den MySQL Befehlen verzichten, sonst bekommt Du keine Fehler mit. d) Stichwort "Transaktion". Falls das Skript abbricht, kannst Du das so nicht beliebig wiederholen. Grüße Thomas |
AW: DB verkleinern: jeden 2. Datensatz löschen
Hi,
das geht auch mit mysql. 1. Primary key löschen (created) Code:
ALTER TABLE `tabelle1` DROP PRIMARY KEY Code:
ALTER TABLE `tabelle1` ADD `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ; Code:
DELETE FROM `tabelle1` WHERE id%2=0 Code:
ALTER TABLE `tabelle1` DROP `id` Code:
ALTER TABLE `tabelle1` ADD PRIMARY KEY ( `created` ) |
[GELÖST]: DB verkleinern: jeden 2. Datensatz löschen
Moin!
Code:
ALTER TABLE `tabelle1` DROP PRIMARY KEY;# Betroffene Datensätze: 681 Gruß lasser |
AW: DB verkleinern: jeden 2. Datensatz löschen
Zitat:
Sehr gute Idee. Grüße Thomas |
AW: DB verkleinern: jeden 2. Datensatz löschen
Moin!
Keine Angst, STRG-C/V sind mir zwar ein Begriff, aber zwischen C und V liegt noch mein Hirn ;-) Und ich verwende zum Testen solchen Krams immer nur nicht mehr benötigte Tabellen und habe vom Original mindestens ein aktuelles Backup. Wenn da was schief geht macht es nichts. Gruß lasser |
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:07:37 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.