Decisione di creare un Indice sulla colonna di tabella nel database?

Io non sono db ragazzo. Ma ho bisogno di creare tabelle e fare operazioni CRUD su di loro. Ho confuso devo creare un indice su tutte le colonne di default
o no? Qui è la mia comprensione che considero durante la creazione di un indice.

Indice contiene essenzialmente la posizione di memoria intervallo ( a partire posizione di memoria in cui il primo valore è memorizzato per fine locazione di memoria in cui l’ultimo valore è
archiviati). Così, quando si inserisce un qualsiasi valore in tabella indice della colonna deve essere aggiornato, come essa ha un valore in più, ma l’aggiornamento di colonna
valore da non avere alcun impatto sul valore dell’indice. Giusto? Così la linea di fondo è che quando la mia colonna è utilizzata in join tra due tabelle si dovrebbe prendere in considerazione
la creazione di un indice sulla colonna utilizzata in join, ma tutte le altre colonne possono essere ignorati, perché se vogliamo creare un indice su di essi comporterà costi aggiuntivi di
l’aggiornamento dell’indice di valore quando il nuovo valore viene inserito nella colonna.Giusto?

Considerare questo scenario, in cui la tabella mytable contiene due tre colonne che ho.e col1,col2,col3. Ora abbiamo il fuoco questa query

select col1,col2 from mytable

Ora ci sono due casi qui. Nel primo caso si crea l’indice col1 e col2. Nel secondo caso non abbiamo creato un indice.** Come per la mia comprensione
caso 1 sarà più veloce rispetto al caso 2, perché nel caso 1 si oracle è in grado di trovare rapidamente colonna posizione di memoria. Quindi qui non ho usato alcun colonne di join, ma
ancora indice è aiutare qui. Quindi devo considerare la creazione di un indice qui o no?**

Che se in uno stesso scenario sopra, se abbiamo il fuoco

select * from mytable

invece di

select col1,col2 from mytable

Indice aiutare qui?

  • Indice di non fare nulla per i valori nella clausola SELECT. Ciò che conta è l’elenco dei campi della clausola o del tuo clausola WHERE.
  • Non Oracle uso di indici di copertura quando si può? Io sono un SQL Server ragazzo e so che Oracle gestisce gli indici, un po ‘ diverso, ma ho pensato che in alcuni casi non ancora fatto uso di indici di copertura.
  • Eh. Imparare qualcosa di nuovo ogni giorno. Anche io sono un MSSQL ragazzo e non lo sanno. Ancora, sembra che l’indice di copertura è utile solo se si sta facendo un sacco di R e non molto CUD.
  • Vero. Come un sacco di cose su DB è tutto un atto di bilanciamento. Dove questo equilibrio finisce dipende dalle specifiche dell’applicazione.
  • blog.sqlauthority.com/2011/01/17/…
InformationsquelleAutor M Sach | 2011-10-12

 

3 Replies
  1. 15

    ma l’aggiornamento del valore di colonna non hanno alcun impatto sul valore dell’indice. Giusto?

    No. L’aggiornamento di una colonna indicizzata avranno un impatto. Oracle 11g manuale di prestazione afferma che:

    AGGIORNAMENTO di istruzioni che consentono di modificare le colonne indicizzate e di INSERIRE e CANCELLARE
    istruzioni che modificano le tabelle indicizzate richiedere più tempo se c’erano
    nessun indice. Tali istruzioni SQL devono modificare i dati indici e dati in
    le tabelle. Essi, inoltre, la creazione di ulteriori undo e redo.


    Così la linea di fondo è che quando la mia colonna è utilizzata in join tra due tabelle si dovrebbe prendere in considerazione la creazione di un indice sulla colonna utilizzata in join, ma tutte le altre colonne possono essere ignorati, perché se vogliamo creare un indice su di essi comporterà costi aggiuntivi di aggiornamento indice di valore quando il nuovo valore viene inserito nella colonna. Giusto?

    Non Inserisce solo, ma anche qualsiasi altra Data Manipulation Language istruzione.

    Considerare questo scenario . . . Indice aiuto qui?

    Per quanto riguarda questo ultimo paragrafo, perché non creare alcuni casi di test con il rappresentante volumi di dati in modo che è possibile dimostrare o confutare la tua ipotesi sulle colonne si dovrebbe indice?

  2. 31

    Non creare Indici in ogni colonna! Sarà rallentare le cose su insert/delete/update operazioni.

    Come un semplice promemoria, è possibile creare un indice in colonne che sono comuni in WHERE, ORDER BY e GROUP BY clausole. Si può considerare l’aggiunta di un indice a colonne che vengono utilizzati per collegare altre tabelle (attraverso un JOIN, per esempio)

    Esempio:

    SELECT col1,col2,col3 FROM my_table WHERE col2=1

    Qui, la creazione di un indice col2 sarebbe di aiuto questa query molto.

    Inoltre, considerare l’indice di selettività. Messo semplicemente, creare un indice su valori che ha un “big dominio”, cioè gli Id, nomi, etc. Non crearli su colonne Maschio/Femmina.

  3. 3

    Nello specifico scenario di danno, non c’è nessuna clausola WHERE, quindi una scansione della tabella sta per essere utilizzato o l’indice di scansione sarà utilizzato, ma stai eliminazione di una colonna, in modo che le prestazioni potrebbero non essere così diversi. Nel secondo scenario, invece, l’indice non dovrebbe essere utilizzato, in quanto non è coprente e non c’è nessuna clausola WHERE. Se ci fosse una clausola WHERE, l’indice potrebbe consentire il filtraggio per ridurre il numero di righe che devono essere esaminate fino a ottenere la colonna mancante.

    Oracle ha una serie di tabelle diverse, tra cui heap o di un indice tabelle organizzate.

    Se un indice di copertura, è più probabile che venga utilizzata, soprattutto quando selettiva. Ma è da notare che un indice organizzato tabella non è di meglio di un indice di copertura su un mucchio quando ci sono vincoli nella clausola WHERE e di gran lunga meno colonne dell’indice di copertura rispetto alla tabella di base.

    Creazione di indici con più colonne che vengono effettivamente utilizzati aiuta solo se essi sono più propensi a fare l’indice di copertura, ma l’aggiunta di tutte le colonne sarebbe simile a un indice organizzato tabella. Nota che Oracle non hanno l’equivalente di SQL Server INCLUDE (COLONNA) che può essere utilizzato per rendere indici di copertura (di fatto un’ulteriore indice cluster di solo un sottoinsieme delle colonne – utile se si desidera creare un indice univoco, ma anche aggiungere alcuni dati che non si desidera essere considerato nell’unicità, ma aiuta a rendere copertura per più query)

    Hai bisogno di guardare i tuoi programmi e quindi determinare se gli indici aiutare le cose. E poi guardiamo i piani dopo per vedere se hanno fatto la differenza.

Lascia un commento