Salve a tutti,
potrei avere un problema di performance circa la query di posizionamento per il mio gioco.
Spiego subito.
Ho la tabella PUNTI, con 280.000 record, così fatta:
ID | IDUTENTE | PUNTI
(Indici su tutti e 3 i campi.)
Ora, per determinare la posizione di un utente in classifica che ha diciamo 43 punti, faccio cosi:
Ovvero mi trovo quanti record ci sono fino al mio.codice:SELECT punti FROM tbl_punti WHERE status = 'a' AND punteggio > 43;
Ora, tutto bello, funziona bene, il problema è che facendo analisi mi rendo conto che, ovviamente, un sistema di questo tipo scansiona tutta la tabella, per forza, con questi risultati:
Devo dire che il tempo di ritorno è solitamente veloce (a parte in momenti di carico, come mostra la riga qui sopra) ma esaminare 405.849 righe e mandarne 120.910 per n utenti credo sia comunque troppo, no?codice:# Query_time: 94 Lock_time: 0 Rows_sent: 120910 Rows_examined: 405849
Volevo chiedere se qualcuno ci è già passato e sa suggerirmi un metodo più performante.
Che mi consigliate????
Grazie!

Rispondi quotando
) allora ti servono ovviamente due indici, uno su status e uno su punteggio.

) matematico.