In inglese semplice, qual è l'indice del database più simile a? [duplicare]

13

Impostazione : supponiamo che tu stia insegnando un'introduzione alla classe Database, gli studenti sono studenti CS che hanno una conoscenza pratica delle strutture ad albero, come possono velocizzare le ricerche e probabilmente ne hanno implementati alcuni in la loro vita.

Domanda : come descriveresti il modo in cui un database utilizza gli indici per cercare in una tabella un insieme di chiavi? Quale struttura è un indice di database più simile a?

Bonus : in che modo qualcuno scrive una query SQL where clausola per sfruttare la capacità di ricerca dell'indice che progettano su una determinata tabella?

Le risposte dovrebbero corrispondere a tutti i prodotti di database nel loro complesso. Sto cercando suggerimenti generali che consentano una ricerca più rapida su tutti i database. Semplici descrizioni in inglese per favore, nessun codice, le descrizioni di ricerca Big O vanno bene. Questa domanda potrebbe essere troppo specifica per questo sito, ho preso in considerazione la possibilità di chiedere su StackExchange ma dal momento che sto richiedendo una semplice descrizione in inglese di un concetto generale, ho pensato che questo sito sarebbe stato OK.

    
posta wfoster 09.04.2013 - 16:26
fonte

6 risposte

30

Gli indici del database sono modellati dopo gli indici di libri di testo, quindi resi più efficienti:

Lepartinonindentatesonolaparteprincipalesucuistaicercandoelaparterientrataaldisottodialcunediesseidentificaulteriormenteargomentispecifici.Ognilivellodirientroèsimileaun'altracolonnadell'indice.

L'utilizzodegliindiciè(penso)parzialmentespecificoperl'implementazione.Adesempio:

  • Seinterroghilacolonnafoodper"chicken" , l'indice sarà utilizzato.
  • Per "chick%" , direi che dipende dal database / tipo di indice, anche se tutti quelli che conosco lo useranno ancora.
  • Regole simili si applicano per l'interrogazione delle colonne food e drink per "chicken" e "water" : prima limita i risultati in base alla prima colonna dell'indice, quindi al secondo - proprio come se si fosse utilizzato l'indice esterno , quindi l'indice indentato, in un libro di testo.
  • Allo stesso modo per "chik%" e "wat%"
  • Tuttavia, "%ken" non può essere cercato in un indice nei database che conosco, perché indicizzano dalla parte anteriore della parola, non dal retro, come gli indici di libri di testo. Quindi il database dovrà eseguire la scansione dell'intera tabella.
risposta data 09.04.2013 - 16:34
fonte
10

Voglio dire, è più simile a un indice. Invece di rovistare nell'intero libro, lo cerchi nell'indice e trovi la pagina su cui si trova.

La magia funziona perché l'indice è organizzato in un modo più facile da cercare rispetto al libro, cioè alfabeticamente.

    
risposta data 09.04.2013 - 16:33
fonte
7

Prendi un libro, qualsiasi libro tecnico.

Vai alla fine - dove c'è un ... Indice.

Perché è lì? La stessa ragione per il DB. Quindi non devi cercare attraverso un intero libro per una voce specifica.

Pensa a un dizionario. È un indice di parole, in ordine alfabetico.

    
risposta data 09.04.2013 - 16:34
fonte
2

Supponendo che il pubblico abbia realmente "una conoscenza pratica delle strutture ad albero, come possano velocizzare le ricerche" (e quindi "plain English" non è proprio ciò di cui hanno bisogno):

Un indice DB è un albero B che utilizza i valori di una o più colonne (le tuple nel caso di più colonne) come chiavi e riferimenti ai record corrispondenti come valori.

Un B-Tree è un albero di ricerca con un grado di ramificazione molto elevato che è ottimizzato per la localizzazione dei dati e quindi funziona ancora bene quando è troppo grande per essere tenuto nella RAM (e l'accesso casuale diventa estremamente costoso).

Da questo, dovrebbe essere chiaro che un indice può solo aiutare ad accelerare una query quando la clausola WHERE coinvolge le colonne dell'indice in una condizione di uguaglianza, una condizione maggiore / minore o specificando un prefisso (che usa il colonne nell'ordine sam che compaiono nell'indice, per gli indici a più colonne) - perché quelle sono le operazioni supportate da un albero di ricerca.

    
risposta data 09.04.2013 - 17:14
fonte
1

Non deve essere un albero b, ma molti database usano gli alberi b per implementare i loro database. Qualunque cosa tu voglia sapere su come funziona un indice e quali sono le sue caratteristiche di prestazione, puoi scoprirlo studiando gli alberi B.

    
risposta data 09.04.2013 - 17:12
fonte
0

Da Utilizza l'indice Luke :

A database index is, after all, very much like the index at the end of a book: it occupies its own space, it is highly redundant, and it refers to the actual information stored in a different place.

    
risposta data 09.04.2013 - 16:36
fonte

Leggi altre domande sui tag