10. marts 2011 - 17:26Der er
3 kommentarer og 1 løsning
Hvordan fletter man kunder i stor database
Jeg har en db på 120.000 kunder. Ca 10.000 af dem er dubletter efter definitionen samme navn, adresse, postnr og by.
Hver gang to dubletter flettes sammen til eet emne, skal tomme felter udfyldes hvis de ikke er tomme hos det andet emne.
Desuden skal 4 andre tabeller have opdateret referencen til det ny kundeid for de emner som flettes ind i et andet.
Jeg kan ikke få det lavet, så det gøres på under en time. Det er kravet. Mine metoder er simpelthen allesammen for langsomme. Hvordan gør jeg det lynhurtigt ?
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Det er meget svært at hjælpe uden nogle flere oplysninger. Hvad er det for "metoder" du bruger som er langsomme. Og hvordan ser tabellerne ud, hvad er det de skal "flettes" på.
Men ud over det, er mit første råd ikke at tillade dubletter i din tabel.
tabellerne skal flettes på tlfnr1, tlfnr2, tlfnr3, email, hjemmeside, antal ansatte og branche.
metode 1: Henter alle kunder ind i et dataset i c# på serveren, finder dubletterne(tager 1 minut) og kører 10000*4 update kommandoer. Det tager 10 timer selvom update komandoen er simpel: "update tsubjectcontact set subjectID=[newID] where subjectID=[discardedID]". Skal jeg lave et index på tabellen for at update går hurtigere?
metode 2: Laver en ny tabel tpendingupdates med id updates som mangler. Derefter:"update tsubjectcontact tsc, tpendingupdates tpu set tsc.subjectID=tpu.newID where tsc.subjectID=tpu.discardedID". Men den blev bare aldrig færdig.
Håber jeg bare mangler et index. Forstår ikke helt hvornår man skal bruge indexes.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.