Mysql
 sql >> Database >  >> RDS >> Mysql

Ottimizzazione di una semplice query su due grandi tabelle

Per quanto ne so, il modo migliore per fare una query come quella "veloce come un fulmine", è creare una tabella di riepilogo che tenga traccia delle visualizzazioni delle pagine degli amici per pagina per creatore.

Probabilmente vorrai tenerlo aggiornato con i trigger. Quindi la tua aggregazione è già stata eseguita per te ed è una semplice query per ottenere le pagine più visualizzate. Puoi assicurarti di avere gli indici appropriati nella tabella di riepilogo, in modo che il database non debba nemmeno ordinare per ottenere il massimo visualizzato.

Le tabelle di riepilogo sono la chiave per mantenere buone prestazioni per le query di tipo aggregazione in ambienti prevalentemente di lettura. Fai il lavoro in anticipo, quando si verificano gli aggiornamenti (raro) e quindi le query (frequenti) non devono fare alcun lavoro.

Se le tue statistiche non devono essere perfette e le tue scritture sono in realtà abbastanza frequenti (il che è probabilmente il caso di qualcosa come le visualizzazioni di pagina), puoi raggruppare le visualizzazioni in memoria ed elaborarle in background, in modo che gli amici non non è necessario mantenere aggiornata la tabella di riepilogo, poiché visualizzano le pagine. Tale soluzione riduce anche la contesa sul database (meno processi che aggiornano la tabella di riepilogo).