Ik heb een database die vanaf verschillende kanten door dezelfde data wordt gevoed.
Dit heeft er mee te maken dat alles door kan draaien als 1 bron uitvalt.
Ik update vanuit de verschillende bronnen met ODBC.
Dan krijgt je dus elke melding meerdere keren in de database.
De meldingen gaan per (ongeveer) 20 per minuut in de database.
In de ODBC heb ik het volgende als Initial Statement het volgende ingevuld om te ontdubbelen:
DELETE t1 FROM tabel1 t1
INNER JOIN tabel2 t2
WHERE
t1.id < t2.id AND
t1.veld1 = t2.veld1 AND
t1.veld2 = t2.veld2;
Dat doet zijn werk prima.
Van alles wat dubbel is bewaart hij de nieuwste (aan de hand van de id).
Maar dit zijn zoveel vergelijkingen elke keer dat hij daar elke keer 7 seconden mee bezig is.
Het is natuurlijk onzin dat hij elke keer weer volledig de hele tabel door gaat terwijl als je de laatste 100 nieuwe records zou pakken het ook goed gaat (de andere, oudere records zijn al een keer ontdubbelt).
Maar hoe voeg je hier een LIMIT of MAX toe?
Daarbij wil ik niet maximaal een bepaald aantal records wissen maar een maximaal aantal records doorzoeken.
Wie weet hoe dit werkt?
2.450 views