Hallo,
Ik ben bezig met het schrijven van een opschoonquery die ervoor zorgt dat mijn Firebird database niet teveel data bevat (ik ben alleen geinteresseerd in de data van de laatste 7 dagen).
Ik heb de volgende 2 tabellen:
Log
Positions
Stel ik wil alle records verwijderen (zowel uit de log tabel als uit de positions als uit de Angle tabel) die ouder zijn dan 7 dagen en NIET meer gebruikt worden in de laatste 7 dagen. Dus Position 5, 6, en 7 moeten gewist worden, en Angle 1 moet gewist worden (en ook eerste 3 records in de log tabel).
Op dit moment gebruik ik de volgende query:
Maar deze query is tamelijk traag (er zitten in de orde van 100.000 records in elke tabel) en het zijn een stuk of 10 tabellen die op deze manier opgeschoont worden. Ik vroeg me af of er snellere mogelijkheden zijn. Ik hebt het reeds via een JOIN geprobeerd, echter vind Firebird dit geen geldige opbouw van de query
Ik ben bezig met het schrijven van een opschoonquery die ervoor zorgt dat mijn Firebird database niet teveel data bevat (ik ben alleen geinteresseerd in de data van de laatste 7 dagen).
Ik heb de volgende 2 tabellen:
Log
DateTime | PositionID | AngleID |
1-5-2010 | 5 | 1 |
2-5-2010 | 6 | 2 |
3-5-2010 | 7 | 2 |
4-5-2010 | 8 | 2 |
5-5-2010 | 9 | 2 |
9-5-2010 | 12 | 2 |
10-5-2010 | 13 | 2 |
Positions
PositionID | Longitude | Latitude |
5 | 5.33124 | 6.31774 |
6 | 12.43123 | 14.550444 |
7 | 12.43123 | 14.550444 |
8 | 12.43123 | 14.550444 |
Stel ik wil alle records verwijderen (zowel uit de log tabel als uit de positions als uit de Angle tabel) die ouder zijn dan 7 dagen en NIET meer gebruikt worden in de laatste 7 dagen. Dus Position 5, 6, en 7 moeten gewist worden, en Angle 1 moet gewist worden (en ook eerste 3 records in de log tabel).
Op dit moment gebruik ik de volgende query:
SQL:
1
| DELETE FROM POSITIONS b WHERE b.POSITIONID NOT IN (SELECT DISTINCT a.POSITIONID FROM LOG a WHERE a.DATETIME > CURRENT_DATE-7) |
Maar deze query is tamelijk traag (er zitten in de orde van 100.000 records in elke tabel) en het zijn een stuk of 10 tabellen die op deze manier opgeschoont worden. Ik vroeg me af of er snellere mogelijkheden zijn. Ik hebt het reeds via een JOIN geprobeerd, echter vind Firebird dit geen geldige opbouw van de query
Mess with the best, die like the rest