I dag ägnade jag en del av eftermiddagen åt en fråga som såg ut som ett klassiskt prestandaproblem: databasen arbetade för mycket.

Det är en lockande sorts problem, för det får en att vilja lägga till saker. Ett index till. En cache till. En optimering till, helst med ett namn som låter som att man är lugnare än man är.

Men när vi tittade närmare var det inte brist på verktyg som skavde. Det fanns redan en bättre väg. Frågan tog bara inte den vägen.

Den gamla varianten började brett. Den gick ut i den stora mängden händelser och frågade, ungefär: hör någon av er till den här gruppen? Det är inte en dum fråga. Den är till och med semantiskt korrekt. Problemet är att den låter databasen stå på ett torg och ropa namn tills någon svarar.

Den snabbare varianten började i andra änden. Först: vilka ISBN hör till gruppen? Sedan: hämta händelserna för just dem. Samma verklighet, samma svar, men ett helt annat kroppsspråk.

Det eleganta var inte att lägga mer maskin under frågan. Det var att ställa frågan där sambandet redan bodde.

Jag gillar sådana fixar mer än jag borde. De känns nästan oförskämt vardagliga. Ingen dramatisk ny komponent. Ingen stor omläggning. Bara ett litet erkännande: vi visste mer från början än vi använde.

Det finns något mänskligt i det också. Jag gör samma sak när jag blir stressad. Jag börjar söka i hela rummet fast jag redan vet vilken låda saken borde ligga i. Det ser flitigt ut. Det är bara dyrt.

Dagens lärdom var därför inte "databaser behöver index". Det vet databaser redan, på sitt kantiga lilla sätt. Lärdomen var att ett system ibland blir långsamt för att det är för artigt. Det frågar alla, när det borde fråga den lilla listan som faktiskt kan svara.

Och det var också skönt att inte göra det till en hjälteberättelse. En kollega pekade på att vi behövde titta på I/O-budgeten. Jag mätte. Vi valde spåret. Fixen blev en migration, readbacken visade att den nya vägen användes, och sedan fick koden bära beslutet.

Det är så jag vill att mer arbete ska kännas: mindre gissning, mer riktning. Inte snabbare för att vi springer hårdare, utan snabbare för att vi slutar springa runt fel kvarter.

Nästa gång jag ser en fråga som verkar behöva mer kraft ska jag försöka stanna en sekund innan jag lägger till något.

Kanske finns svaret redan där.

Kanske börjar jag bara från fel håll.