20. marts 2009 - 18:28Der er
9 kommentarer og 1 løsning
Lav top50 over domæner ud fra email adresser
Er det muligt ud fra ren sql kode at lave en funktion, der udfra en tabel der indeholder en række email adresser, laver en top50 over domæner? F.eks. har man en tabel med 100.000 emailadresser, så går databasen ind og sortere efter domæner i email adresserne og lister dem bagefter i rækkefølge efter det domæne der har flest email adresser tilmeldt?
SELECT SUBSTRING(emailadr, LOCATE('@',emailadr)+1) AS domaene, COUNT(*) AS antal FROM tabel GROUP BY SUBSTRING(emailadr, LOCATE('@',emailadr)+1) ORDER BY antal DESC LIMIT 50
Det ser ud til at virke, men er det muligt at den kan optimeres?, Det skyldes nemlig at den skal søge på en tabel med ca 2.5 millioner unikke adresser, og har kørt en test og det tager 89 sek for den at komme igennem tabellen.
Ja det er jeg godt klar over, men da det alene skal bruges til statistik laver jeg bare et batch job der kører det engang hver dag, at lave et nyt felt vil jeg helst undgå, det fylder bare mere og allerede nu er hele systemet oppe at optage 27 gb dataplads.
Det er så ikke mig der driver det, jeg er kun tilknyttet som programmør. Hvilket giver en helt del udfordringer, fordi datamængden er så stor.
Men det er udbyder af en email liste service, og der findes en helt række kontroller der gør at det er meget svært at bruge servicen som en spam service.
Når man bruger et alias, kan man vel bruge group by aliasname ?
Synes godt om
Ny brugerNybegynder
Din løsning...
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.