Attenzione
Se la query e gli indici sono strutturati bene, LIMIT funziona benissimo e si interrompe al momento giusto
Certo è che se tu fai un query ordinando per un campo "non indicizzato" allora mysql è obbligato a guardarsi tutta la tabella, estrarsi tutti i dati, ordinarli e solo allora può decidere quali sono "i primi dieci"
Se invece l'ordinamento/group by/condizioni where sono strutturate ottimizzando al meglio gli indici, LIMIT è perfetto ed è LA soluzione
Immaginiamo questa situazione
SELECT * FROM tabella ORDER BY campo LIMIT 10
Se "campo" non è un indice di "tabella" allora mysql è costretto ad analizzare TUTTA la tabella prima di dirti quali sono i "primi 10" e non c'è altro modo al mondo per risolvere il problema
Se invece "campo" è dichiarato quantomeno come "index" allora mysql potrà tranquillamente analizzare direttamente i primi 10
L'argomento non si esaurisce ovviamente qui, ma coinvolge le condizioni di WHERE, di JOIN, di GROUP BY e molte altre variabili. Ma la soluzione è solo ed unicamente quella, strutturare bene tabelle e applicazione, tenendo presente la creazione di indici combinati, adatti a rendere migliori le query più "comuni" e "frequenti" dell'applicazione stessa

Rispondi quotando