2010-01-13 10 views
5

rallenta il tempo di interrogazione per utilizzare un sacco di indici univoci? Non ho che molte im solo curioso, mi pare di aver sentito questo alcuni doveindice univoco rallenta?

  • id (auto_increment primario)
  • nome utente (unica)
  • la password
  • sale (unica)
  • e-mail (unico)
+0

Dipende dalla query, posta e il piano di esecuzione per una risposta completa. –

+0

Più importante della velocità è l'integrità dei dati. Se la colonna deve essere unica, è meglio contrassegnarla come tale nel database. Sì INSERTI, gli AGGIORNAMENTI saranno più lenti ma i dati sono inutili se l'integrità non è presente. – HLGEM

risposta

6

Dipende dal software del server del database e dal tipo di tabella/indice che si sta utilizzando. Gli inserimenti saranno più lenti ogni volta che si hanno indici di qualsiasi tipo, ma non necessariamente di molto - questo dipenderà anche dalle dimensioni della tabella.

In genere, indici univoci dovrebbe velocità fino qualsiasi query di selezione si utilizzo che sono in grado di sfruttare l'indice (es)

+1

sì, inserti/aggiornamenti farà manutenzione indicizzazione che annunci tempo per l'operazione. –

0

Tempo di interrogazione, n. Tuttavia, rallenteranno i tempi INSERT e DELETE poiché ogni valore dell'indice deve essere calcolato e quindi inserito o rimosso.

1

In generale, avere più indici rallenta inserimenti, aggiornamenti ed eliminazioni, ma può velocizzare le query, presupponendo che si esegua una query in base a questi campi.

Se è necessario un indice univoco per garantire coerenza nell'applicazione, è consigliabile aggiungerlo, anche se ciò si tradurrà in un leggero calo di prestazioni. È meglio essere corretti che veloci ma sbagliati.

2

Essi rallenteranno gli inserimenti e gli aggiornamenti (poiché ciascuno deve essere controllato per vedere se il vincolo è violato), ma non dovrebbe rallentare la selezione. In effetti, potrebbero velocizzarli, dal momento che ci sono più opzioni per l'ottimizzatore da utilizzare per trovare i tuoi dati.

1

Ogni volta che si aggiunge una chiave univoca per una tabella di database si aggiunge un indice non in cluster. Gli indici raggruppati si trovano sulle chiavi primarie e ordinano fisicamente i dati nella tabella in base a tali colonne. Ogni indice non in cluster crea un numero di foglie esterne alla tabella che ordina in base alla chiave univoca. Ciò consente una ricerca molto più coerente sulla chiave univoca perché non è più necessaria una scansione completa della tabella. Il lato negativo è ogni volta che si inserisce, aggiorna o elimina una riga dalla tabella, il server deve tornare indietro e aggiornare tutte le foglie esterne alla tabella. Questo di solito non è un problema se si dispone di un numero limitato di tasti univoci, ma quando ne hai molti può rallentare i tempi di risposta. Per maggiori informazioni, leggi l'articolo di Wikipedia here. Msdn ha anche un buon articolo.

Problemi correlati