Ez egy nagyon egyszerű programozási feladat, nem adnék rá megoldást, mert biztos vagyok benne, hogy több jó megoldás is van a hozzászólások között, amiket nem olvastam teljesen végig. Bármilyen programozási nyelven ami nem indít soronként új processzt a párezer sor feldolgozása nevetségesen rövid idő lesz, kulcsonként ki kell gyűjteni a maximumot és azt betenni az adatbázisba a végén lehetőleg 1 vagy kevés tranzakcióban. De még az is lehet, hogy ha az eredeti megoldásnál maradsz, csak több update-et csokorba szedve csinálsz csak tranzakciót, már akkor is sokkal gyorsabb lesz.
Ami eszembe jutott róla, hogy volt idén a billion row challenge, ahol hasonló volt a feladat: CSV-szerű szövegfájlból kellett kulcsonként minimumot, maximumot és átlagot számolni (vagy ilyesmi). A győztes megoldás (lásd: https://github.com/gunnarmorling/1brc?tab=readme-ov-file#results ) a 1E9 sort (ez a billion angolul, ugye?) 01.535 másodperc alatt dolgozta fel. És ez a Java megoldás volt, több más programnyelven is készült pályamű, lehet hogy van ami még gyorsabb. Szóval ez legyen a benchmarkod a feladatodra!
Például 10 ezer sorral egyszerűen arányítva a számokat az jön ki, hogy 0,00001535másodperc alatt illene végezni. Érdemes belegondolni, hogy az eredeti megoldással ez a probléma annyira lassú volt, hogy egyáltalán szóba került, hogy optmimalizálni kell. Hányszoros optimálatlanság volt az eredeti megoldásban? Elgondolkodtató.