Durante il mio primo stage, lavoravo su un gestionale con una tabella ordini che conteneva circa 180.000 righe. Ogni ricerca per cliente impiegava tra 4 e 9 secondi.
Dove cercavo il problema
Ho trascorso tre giorni a riscrivere il codice Python che costruiva le query. I tempi miglioravano di qualche decimo di secondo, ma il problema restava evidente.
La diagnosi corretta
Il senior developer ha eseguito EXPLAIN ANALYZE sulla query e ha mostrato una full table scan su una colonna usata in ogni WHERE. La colonna cliente_id non aveva alcun indice.
Aggiungere un singolo indice ha ridotto il tempo di risposta da 7 secondi a meno di 0,3 secondi. Nessuna modifica al codice applicativo.
Cosa ho cambiato nel mio approccio quotidiano
- Prima di ottimizzare il codice, analizzare sempre il piano di esecuzione della query
- Verificare la presenza di indici su ogni colonna usata in JOIN e WHERE
- Documentare le decisioni sugli indici come si documenta il codice
Oggi, quando studio nuovi strumenti come pdf24 download per gestire documentazione tecnica offline, applico la stessa logica: capire il collo di bottiglia prima di cercare soluzioni alternative. In database programming, diagnosticare correttamente vale piu di qualsiasi ottimizzazione superficiale.