An Khayra
wzl-lid
Sinds 27/5/2004
T: 5
R: 72
|
19/12/2004 -
18:18u
| Quote
|
Ik ga ook eens een vraag stellen zie.
Ik heb, in VB6, 2 ADO (disconnected) recordsets met dezelfde kolommen, en wil die samenvoegen tot een derde recordset. En dan moet er bovendien nog een DISTINCT op gebeuren ook.
Wat ik niet kan: de query kan ik niet wijzigen, en alle bewerkingen moeten in geheugen (moet snel gaan) gebeuren. Als het bovendien in 1 keer zou kunnen, zou best zijn.
|
Cassy
wzl-lid
Sinds 24/9/2004
T:4 -
R:104
|
23/12/2004 -
10:18u
| Quote
|
Hoe groot zijn die recordsets dan, als het 2 keer 20 records zijn dan kan je gewoon een derde maken en die 2 gewoon gaan overlopen en toevoegen. Als je met 1000'enden records bezig bent, dan zijn er misschien performantere mogelijkheden.
|
An Khayra
wzl-lid
Sinds 27/5/2004
T:5 -
R:72
|
23/12/2004 -
13:16u
| Quote
|
Ik heb het nu zo gedaan dat de twee recordsets afgelopen worden, en er wordt een derde gemaakt, dan verwijder ik de dubbels uit de gestorteerde derde recordset. Maar dat zijn minimum 3 lussen, dus 3*20 iteraties (bij 20 records). Het is wel generiek, en zit in een COM+ DLL ... het gaat (voorlopig) nog over relatief weinig records (1 tot 20).
Als er een functie zou bestaan in de zin van: rs.mergeWith(rs2 as adodb.recordset, distinct as boolean) zou dat natuurlijk beter zijn geweest, maar ik vind niks ...
Laatst aangepast door
An Khayra
op 23/12/2004 13:17:18u
(1x aangepast)
|
Cassy
wzl-lid
Sinds 24/9/2004
T:4 -
R:104
|
23/12/2004 -
14:33u
| Quote
|
Kan je het samenvoegen en controleren op dubbels niet in 1 functie combineren, dan spaar je mijns inziens wel al tijd uit.
|
An Khayra
wzl-lid
Sinds 27/5/2004
T:5 -
R:72
|
24/12/2004 -
10:08u
| Quote
|
Geen slecht gedacht, maar ik ben niet zeker dat dat qua performance beter is. Dat zou ik een moeten bekijken met heel grote recordsets (1 miljoen records of zo).
Als je beide gelijktijdig wil doen, dan moet je ofwel 1. twee recordsets gelijktijdig aflopen, en vergelijken op welk punt je zit, met ingewikkelde code tot gevolg, of 2. tijdens het aflopen van de tweede recordset ook de ontvangende recordset aflopen (wat enorm veel verplaatsingen van de cursor tot gevolg heeft omdat hij elke keer naar de laatste moet verspringen bij 'AddNew')
Maar, het zou wel sneller kunnen zijn, dat moet ik maar eens uittesten. Ik heb wel enkele tabellen met > 1 miljoen records ter beschikking, dus dat zou wel moeten lukken ...
|