Il seguente è basato sulla mia esperienza PostgreSQL, ma probabilmente anche applicare per MySQL e altri.
Se si prevede di recuperare un numero elevato di record da questa tabella o di utilizzare l'impaginazione, sarebbe utile un indice sui campi utilizzati nello ORDER BY
.
È necessario creare un indice su tutti i campi dell'ordine nello stesso ordine. Se si mescola ASC
e DESC
nel proprio ORDER BY
, sarà necessario creare un indice con questi ordini specifici per sfruttare al massimo l'indice.
Una migrazione ActiveRecord adatto per le tue foto tabella sarebbe:
add_index :photos, [:created_at, :version]
mi sento di raccomandare a guardare il EXPLAIN ANALYZE
di uscita con i dati di produzione simile prima e dopo l'aggiunta dell'indice per confermare che sta avendo l'effetto si è dopo.
fonte
2010-12-15 00:17:53
Sembra una buona pratica farlo. Ma forse non farà la differenza in termini di velocità, perché se ordinati per id sono (di solito) già ordinati, e Rails genera automaticamente un indice per id. –