Mede /14'ers
Ik zit met het volgende:
Ik heb een vrij grote DB2 database een een SQL script om die database wat op te schonen.
Het werk ongeveer als volgt:
- Er is eeb VIEW die bepaald welke records er voor verwijdering in aanmerking komen.
- Het resultaat van die VIEW (records met record-id's) wordt in een aparte tabel opgeslagen.
- Uitgangspunt is dan die tabel, waarin alle record-id's staan. De tabel heeft als inhoud per record 4 id's van de 4 belangrijkste tabellen die geschoond moeten worden.
- Er wordt dan een delete gedaan op een tabel waar het id overeenkomt met de id's die verzameld zijn.
Nu het probleem:
Er worden zo'n beetje 200k records verzameld met id's en dit betekend voor één tabel een factor 6 aan delete's.
Omdat dit dus +/- 1,2 miljoen records betreft die in één keer weg gegooid worden, betekend dat dat DB2 uit z'n transaction log loopt en de query niet af kan maken.
Met de helft lukt het wel, maar omdat dit script op verschillende databases moet worden uitgevoerd heb ik het niet voor het zeggen hoeveel records er verzameld worden.
Ik zat er dus aan te denken om of de view aan te passen dat er maar max 100k records gevonden worden, of de tabel waarin de records opgeslagen worden te schonen tot 100k records.
Ik ben al een dag bezig om een query in elkaar te draaien die het aantal records in een tabel kan terug brengen naar 100k. Hierbij maakt het niet uit welke records verwijderd worden, want die worden de volgende keer wel weer opnieuw opgepikt, maar ik wordt nu bijna gillend gek.
Ik ben met COUNT's, SUM's, sub query's enz. enz. aan de gang geweest, maar kan de logica gewoon niet vinden.
Ik hoop nu daarom dat jullie me kunnen helpen of ideeën hebben waar ik weer mee verder kan.
ps.
Het moet wel SQL blijven, ik weet ook wel dat ik er een tooltje omheen kan schrijven, maar dat zoek ik dus net niet.
Ik zit met het volgende:
Ik heb een vrij grote DB2 database een een SQL script om die database wat op te schonen.
Het werk ongeveer als volgt:
- Er is eeb VIEW die bepaald welke records er voor verwijdering in aanmerking komen.
- Het resultaat van die VIEW (records met record-id's) wordt in een aparte tabel opgeslagen.
- Uitgangspunt is dan die tabel, waarin alle record-id's staan. De tabel heeft als inhoud per record 4 id's van de 4 belangrijkste tabellen die geschoond moeten worden.
- Er wordt dan een delete gedaan op een tabel waar het id overeenkomt met de id's die verzameld zijn.
Nu het probleem:
Er worden zo'n beetje 200k records verzameld met id's en dit betekend voor één tabel een factor 6 aan delete's.
Omdat dit dus +/- 1,2 miljoen records betreft die in één keer weg gegooid worden, betekend dat dat DB2 uit z'n transaction log loopt en de query niet af kan maken.
Met de helft lukt het wel, maar omdat dit script op verschillende databases moet worden uitgevoerd heb ik het niet voor het zeggen hoeveel records er verzameld worden.
Ik zat er dus aan te denken om of de view aan te passen dat er maar max 100k records gevonden worden, of de tabel waarin de records opgeslagen worden te schonen tot 100k records.
Ik ben al een dag bezig om een query in elkaar te draaien die het aantal records in een tabel kan terug brengen naar 100k. Hierbij maakt het niet uit welke records verwijderd worden, want die worden de volgende keer wel weer opnieuw opgepikt, maar ik wordt nu bijna gillend gek.
Ik ben met COUNT's, SUM's, sub query's enz. enz. aan de gang geweest, maar kan de logica gewoon niet vinden.
Ik hoop nu daarom dat jullie me kunnen helpen of ideeën hebben waar ik weer mee verder kan.
ps.
Het moet wel SQL blijven, ik weet ook wel dat ik er een tooltje omheen kan schrijven, maar dat zoek ik dus net niet.
Neem je whisky mee, is het te weinig... *zucht*