Domanda

Quello che voglio dire è:? Esiste una tabella con 20 colonne beneficiare di più di indicizzare un determinato campo (uno che viene utilizzato nelle query di ricerca-ish) rispetto a una tabella che ha appena 4 colonne

Inoltre: Qual è il danno per l'aggiunta di indice per i campi che non ricerca con molto, ma potrebbe in seguito in futuro? Esiste un negativo per l'aggiunta di indici? E 'solo la dimensione che occupa su disco, o può rendere le cose più lenti aggiungere indici inutili?

estratto da un commento

Sto usando Postgres (ultima versione) e ho una tabella che farò un sacco di domande come tipo, ecc, ma i valori senza dubbio cambiare spesso dal momento che i miei clienti hanno accesso a CRUD. Dovrei può l'idea di indici? Sono solo un mal di testa?

È stato utile?

Soluzione

  

Esiste una tabella con 20 colonne beneficiare di più di indicizzare un determinato campo (uno che viene utilizzato nelle query di ricerca-ish) rispetto a una tabella che ha appena 4 colonne?

n, il numero di colonne in una tabella non ha alcuna influenza sulle prestazioni di avere un indice.

Un indice è esclusivamente sui valori nella colonna (s) specificato; è la frequenza dei valori che avrà un impatto quanto beneficio le vostre domande vedranno. Ad esempio, una colonna contenente un valore booleano è una buona scelta per l'indicizzazione, perché è un 50/50 possibilità il valore sarà uno o l'altro valore. A 50/50 su tutte le righe, l'indice non limitare la ricerca per una riga particolare.

  

Qual è il danno per l'aggiunta di indice per i campi che non ricerca con molto, ma potrebbe in seguito in futuro?

indici di velocità solo fino il recupero dei dati quando possono essere utilizzati, ma hanno un impatto negativo la velocità di inserimento / aggiornamento / istruzioni DELETE. Indici anche necessitano di manutenzione per mantenere il loro valore.

Altri suggerimenti

Se si sta facendo COME query è possibile che gli indici non non sono di grande aiuto in ogni modo. Mentre un indice potrebbe migliorare questa domanda ...

select * from t23
where whatever like 'SOMETHING%'
/

... è improbabile che un indice aiuterà con una di queste query ...

select * from t23
where whatever like '%SOMETHING%'
/

select * from t23
where whatever like '%SOMETHING'
/

Se si dispone di campi di testo liberi e gli utenti bisogno di corrispondenza fuzzy, allora si dovrebbe guardare a funzionalità testo completo di Postgres. Questo impiega l'operatore CORRISPONDENZA anziché LIKE e che richiede uno speciale tipo di indice. saperne di più.

C'è un Gotcha, che è che gli indici full-text sono più complicati di quelli normali, e la decisioni progettuali correlate non sono semplici . Anche alcune implementazioni richiedono attività di manutenzione aggiuntivi .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top