Hey mede-tweakers,
Voor een schoolopdracht ben ik bezig om tweets op te halen over het OV in Nederland.
Dit doe ik met behulp van R, met de functie dbWriteTable().
Nu is het het geval dat ik nogal veel dubbele tweets binnenhaal, deze verwijder ik dan weer aan de hand van een tweet id in een SQL script.
De query is als volgt:
Nu doet dit in principe precies wat ik wil bereiken, echter is er één probleem, de snelheid van deze query.
Ik heb nu in 4 dagen tijd zo'n 50.000 tweets opgehaald, en dit worden er uiteraard elke dag weer een stuk meer. Nu duurt de query voor 50.000 tweets al bijna een kwartier.
Nu zat ik te denken aan een query die alleen de laatste 600 records pakt, en aan de hand daarvan kijkt of er dubbele zijn, echter weet ik niet helemaal hoe ik dit zou kunnen doen.
Is het dus mogelijk om de dubbele records te verwijderen uit de laatste 600 records in PostgreSQL?
Bij voorbaat dank
Voor een schoolopdracht ben ik bezig om tweets op te halen over het OV in Nederland.
Dit doe ik met behulp van R, met de functie dbWriteTable().
Nu is het het geval dat ik nogal veel dubbele tweets binnenhaal, deze verwijder ik dan weer aan de hand van een tweet id in een SQL script.
De query is als volgt:
SQL:
1
2
3
4
| DELETE FROM tweet a WHERE a.ctid <> (SELECT min(b.ctid) FROM tweet b WHERE a.id = b.id); |
Nu doet dit in principe precies wat ik wil bereiken, echter is er één probleem, de snelheid van deze query.
Ik heb nu in 4 dagen tijd zo'n 50.000 tweets opgehaald, en dit worden er uiteraard elke dag weer een stuk meer. Nu duurt de query voor 50.000 tweets al bijna een kwartier.
Nu zat ik te denken aan een query die alleen de laatste 600 records pakt, en aan de hand daarvan kijkt of er dubbele zijn, echter weet ik niet helemaal hoe ik dit zou kunnen doen.
Is het dus mogelijk om de dubbele records te verwijderen uit de laatste 600 records in PostgreSQL?
Bij voorbaat dank