Recentemente ho velocizzato una query complicata di un ordine di grandezza dando a SQLite un buon indice su cui lavorare. Risultati come questo mi chiedo se dovrei indicizzare molti altri campi che sono comunemente usati per le clausole JOIN o ORDER BY. Ma io non voglio essere troppo zelante e mi ritorto contro di me: presumo che ci debbano essere dei motivi non per creare indici, o ogni campo dovrebbe essere indicizzato di default.Quali sono gli svantaggi di avere molti indici?
In questo caso sto utilizzando SQLite, ma ovviamente il consiglio agnostico di DBMS è ben accetto.
Questo lo copre. Non dimenticare che * hai * bisogno di indici adeguati per buone prestazioni di inserimento/aggiornamento/eliminazione. Come tutte le cose, è un equilibrio. Gli inserimenti –
non beneficiano degli indici ... Gli aggiornamenti e le eliminazioni richiedono di trovare le righe pertinenti, in modo che possano beneficiare degli indici per quel passaggio, ma se si dispone di molti indici, anche tale vantaggio può essere negato. Come dici tu, è tutto un equilibrio :) – MatBailie