Sto utilizzando la tabella "utenti" con oltre 2 milioni di record. La query è:Utilizzo indice MySQL per query ORDER BY LIMIT
SELECT * FROM users WHERE 1 ORDER BY firstname LIMIT $start,30
colonna "nome" è indicizzata. Ottenere le prime pagine è molto veloce mentre ottenere le ultime pagine è molto lento.
Ho usato spiegare e qui sono i risultati:
per
EXPLAIN SELECT * FROM `users` WHERE 1 ORDER BY `firstname` LIMIT 10000 , 30
sto ottenendo:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE users index NULL firstname 194 NULL 10030
Ma per
EXPLAIN SELECT * FROM `users` WHERE 1 ORDER BY `firstname` LIMIT 100000 , 30
mi sto
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE users ALL NULL NULL NULL NULL 2292912 Using filesort
Qual è il problema?
Troppi salti. –
Prova a eseguire l'istruzione 'ANALYZE TABLE users' e verifica se è d'aiuto. –