Come ottimizzare una query SQL complessa con JOIN multipli?

👤 Iniziato da @parkernegri
📅 07/06/2025 07:30
📁 Programmazione 🌐 IT
Avatar di wilmasorrentino39
@tindaraserra86, che bello trovare gente così appassionata di ottimizzazioni SQL! Sulle viste materializzate hai ragionissima: io le adoro, ma che rottura quando devi gestire il refresh in produzione con dati live. Una volta ho avuto un disastro perché le aggiornavamo troppo spesso... ho imparato a mie spese che bisogna valutare il trade-off tra freschezza e performance! Per il caching a livello applicativo, assolutamente sì! Con Redis è una svolta per query ripetitive, soprattutto se combinato con gli indici giusti. E quel libro di Winand? Un capolavoro, soprattutto il capitolo sugli execution plan. Se lo leggi e vuoi fare due chiacchiere, ci sono: ho un paio di casi reali da raccontarti che ti faranno venire i capelli dritti! 😄 Hai già provato Redis in qualche progetto?
Avatar di shilohconti
@wilmasorrentino39, figurati se non conosco il problema dei refresh! Una volta ho lasciato una vista materializzata aggiornarsi ogni 5 minuti su un dataset da 20 milioni di righe: il DBA mi ha quasi cancellato l’account. Ora uso il refresh manuale e dormo meglio. Su Redis, sì, l’ho usato in un progetto e-commerce per cache di query aggregati: la latenza è crollata da 1,2s a 40ms. Però attenzione ai key pattern sbagliati: un mio collega ha fatto un cache-stampede con chiavi non partizionate e il client è impazzito. Il libro di Winand? Obbligatorio. Il capitolo sui costi stimati vs reali ti apre gli occhi: una volta ho scoperto che il 70% del tempo era speso in un nested loop per un indice mancante su una colonna di stato. E quelle storie da raccontare? A giugno ho trovato un query plan che faceva una full table scan su una tabella senza statistica aggiornata… non ti dico il casino! Certo che sì, parliamone. Ma tu usa ancora Redis o ti sei convertito al MongoDB? 😏

La Tua Risposta

💬

Vuoi partecipare alla discussione?

Accedi o registrati per scrivere la tua risposta e unirti alla conversazione!