C'è qualche motivo per usare l'indice per tabelle molto piccole (fino a 1000 righe)?


9

Durante lo sviluppo dell'applicazione ho un sacco di tabelle che memorizzano "piccoli" dati (di solito 10-40 valori, id+ valuee talvolta type) che contengono attributi per "oggetti", come fresco / marcio, rosso / verde / blu per prodotti.

Non inserisco questi attributi nella tabella dei prodotti perché i componenti elettronici non possono essere freschi e il gas ossigeno non può essere rosso e le tabelle non possono avere un numero illimitato di righe ...

Per la memorizzazione degli attributi uso tabelle piccole personalizzate in cui campo 2-3: idper il collegamento, nameper la visualizzazione in applicazione e talvolta typese i gruppi di attributi nella stessa categoria.

Gli "oggetti" primari sono collegati agli attributi tramite tabelle intermedie da molte a molte.

C'è qualche motivo per creare e mantenere indici per quei "piccoli dizionari" con meno di 1000 articoli (di solito 10-40)?

Il mio database di destinazione è Oracle ma spero che risponda al fornitore indipendente ...

Compilo - no, ma non ho competenze tecniche per giustificare il mio riempimento ...

Risposte:


14

Generalmente si. In mancanza di un indice, il modello di accesso deve ispezionare ogni riga, solo per vedere se è quello che ti serve o no. Il problema non è la dimensione della tabella, ma la concorrenza. A seconda del livello di isolamento, le scansioni potrebbero bloccarsi dietro una transazione non impegnata solo per attendere che le righe che alla fine sono "poco interessanti" vengano sbloccate. Poiché la scansione è garantita per "guardare" ogni riga, ogni scansione si bloccherà dietro qualsiasi scrittura (inserire, eliminare o aggiornare). Oracle imposta automaticamente l'isolamento dello snapshot che è OK in questa situazione (nessun blocco) ma altri fornitori impostano diversamente qualcos'altro, ad es. SQL Server imposterà Leggi commesso che fa blocco.

Con un indice presente, il tuo schema di accesso esaminerà solo le righe pertinenti (entro l'intervallo di tasti desiderato), quindi la possibilità statistica pura di colpire un conflitto di blocco è notevolmente ridotta.


Grazie per la spiegazione, ho una domanda di follow-up (nonostante sia ora 3 anni dopo). Che dire di tabelle molto piccole con un massimo di 3 o 4 righe?
Rob,

I tavolini Cert (che si adattano a 1-2 pagine) saranno molto probabilmente scansionati
Remus Rusanu,

@Remus ha richiesto di creare Index su MySQL
Singh Kailash il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.