Ich habe 10 GB Tabellenereignis in MYSQL-Datenbank. Es ist Teil des Webanwendungsservers. Das Anmelden in dieser Datenbank war vorher nicht gut konfiguriert, daher muss ich eine einzige Tabelle "Event" dünner machen. Was ich meine ist, ich habe Datenpunkte Werte Protokolle (Zeilen) und Zeitstempel dieses Wertes. Ich kann nicht alle löschen, ich musste Diagramm aus Werten erstellen, die in dieser Tabelle bleiben. Deshalb muss ich einige repräsentative Daten hinterlassen.Löschen von Zeilen in MySQL in einer Tabelle mit Zeitstempelbedingung
Eine Idee ist es, Zeilen mit demselben Datapid zu löschen, wenn ts diff kleiner als X ist oder vielleicht in pointValues diff eingebaut werden soll?
Bitte helfen Sie mir, richtige Abfrage zu konstruieren.
<!DOCTYPE html>
<html>
<head>
<style>
table, th, td {
border: 1px solid black;
}
</style>
</head>
<body>
<table>
<tr>
<th>id</th>
<th>datapId</th>
<th>dataType</th>
<th>pointValue</th>
<th>ts</th>
</tr>
<tr>
<td>1</td>
<td>5194</td>
<td>1</td>
<td>1</td>
<td>15060882793523</td>
</tr>
<tr>
<td>2</td>
<td>5194</td>
<td>1</td>
<td>1.1</td>
<td>15060882793524</td>
</tr>
<tr>
<td>3</td>
<td>5194</td>
<td>1</td>
<td>2.25</td>
<td>15060882793560</td>
</tr>
<tr>
<td>4</td>
<td>5194</td>
<td>1</td>
<td>2.23</td>
<td>15060882793590</td>
</tr>
<tr>
<td>5</td>
<td>5194</td>
<td>1</td>
<td>0</td>
<td>15060882793620</td>
</tr>
</table>
</body>
</html>
Schließlich habe ich beschlossen, diese folgende Art und Weise zu tun, weniger Reihen zu haben, aber nicht aus den Daten berechnen Durchschnitt. Ich habe alle Datenpunkt-ID aufgelistet, die die meisten Werte hat, und ich lösche alle geraden (basierend auf autoincrementierten Tabellenindizes) redrods aus database.pointvalues, wobei dataPointId = 'X' und (id% 2) = 0; – user4201838