Come creare indici in PostgreSQL

Come creare indici in PostgreSQL

Gli indici sono tabelle di ricerca specializzate utilizzate dai motori a caccia di banche per accelerare i risultati delle query. Un indice è un riferimento alle informazioni in una tabella. Ad esempio, se i nomi in un libro di contatto non sono alfabetizzati, dovresti scendere ogni riga e cercare attraverso ogni nome prima di raggiungere il numero di telefono specifico che stai cercando. Un indice accelera i comandi di selezione e dove le frasi, eseguendo l'inserimento dei dati nei comandi di aggiornamento e inserire. Indipendentemente dal fatto che gli indici siano inseriti o eliminati, non vi è alcun impatto sulle informazioni contenute nella tabella. Gli indici possono essere speciali allo stesso modo in cui la limitazione unica aiuta a evitare i record di replica nel campo o un insieme di campi per i quali esiste l'indice.

Sintassi generale

La seguente sintassi generale viene utilizzata per creare indici.

>> Crea index_name su table_name (column_name);

Per iniziare a lavorare su indici, aprire il pgadmin di PostgreSQL dalla barra delle applicazioni. Troverai l'opzione "server" visualizzata di seguito. Fare clic con il pulsante destro del mouse su questa opzione e collegarla al database.

Come puoi vedere, il database "test" è elencato nell'opzione "database". Se non si dispone di uno, fare clic con il tasto destro del mouse, i database ", vai all'opzione" crea "e nomina il database in base alle tue preferenze.

Espandi l'opzione "Schemi" e troverai l'opzione "Tables" elencata lì. Se non ne hai uno, fai clic con il pulsante destro del mouse, vai a "Crea" e fai clic sull'opzione "Tabella" per creare una nuova tabella. Dato che abbiamo già creato la tabella "emp" puoi vederlo nell'elenco.

Prova la query seleziona nell'editor di query per recuperare i record della tabella "EMP", come mostrato di seguito.

>> Seleziona * dal pubblico.EMP ORDINE DA “ID” ASC;

I seguenti dati saranno nella tabella "EMP".

Crea indici a colonna singola

Espandi la tabella "EMP" per trovare varie categorie, E.G., Colonne, vincoli, indici, ecc. Fare clic con il pulsante destro del mouse su "indici", vai all'opzione "crea" e fai clic su "indice" per creare un nuovo indice.

Costruire un indice per la tabella "EMP" data o la visualizzazione eventuata, utilizzando la finestra di dialogo indice. Qui, ci sono due schede: Definizione "Generale" e ".Nella scheda "Generale", inserire un titolo specifico per il nuovo indice nel campo "Nome". Scegli il "tablespace" in base al quale il nuovo indice verrà archiviato usando l'elenco a discesa accanto a "tablespace."Come nell'area" commento ", fai commenti sull'indice qui. Per iniziare questo processo, vai alla scheda "Definizione".

Qui, specifica il "metodo di accesso" selezionando il tipo di indice. Successivamente, per creare il tuo indice come "univoco", ci sono diverse altre opzioni elencate lì. Nell'area "colonne", tocca il segno "+" e aggiungi i nomi delle colonne da utilizzare per l'indicizzazione. Come puoi vedere, abbiamo applicato l'indicizzazione solo alla colonna "telefono". Per iniziare, selezionare la sezione SQL.

La scheda SQL mostra il comando SQL che è stato creato dagli input durante il dialogo dell'indice. Fai clic sul pulsante "Salva" per creare l'indice.

Ancora una volta, vai all'opzione "Tabelle" e vai alla tabella "EMP". Aggiorna l'opzione "indici" e troverai l'indice "index_on_phone" appena creato elencato in esso.

Ora eseguiremo il comando ESPLEGT SELECT per verificare i risultati per gli indici con la clausola. Ciò comporterà il seguente output, che dice: "SEQ SCAN su EMP.«Potresti chiederti perché è successo mentre stai usando gli indici.

Motivo: il pianificatore di Postgres può decidere di non avere un indice per vari motivi. Lo stratega prende le decisioni migliori la maggior parte del tempo, anche se i motivi non sono sempre chiari. Va bene se una ricerca indice viene utilizzata in alcune domande, ma non in tutto. Le voci restituite da entrambe le tabella possono variare, a seconda dei valori fissi restituiti dalla query. Poiché ciò si verifica, una scansione di sequenza è quasi sempre più rapida di una scansione indice, indicando che forse il pianificatore di query era giusto nel determinare che il costo di gestione della query in questo modo è ridotto.

Crea indici di più colonne

Per creare indici a più colonne, aprire la shell della riga di comando e considerare la seguente tabella "Studente" per iniziare a lavorare su indici con più colonne.

>> seleziona * dallo studente;

Scrivi quanto segue Crea indice query in esso. Questa query creerà un indice chiamato "new_index" nelle colonne "sname" e "età" della tabella "studente".

>> Crea indice new_index su Student (SNAME, Age);

Ora elencheremo le proprietà e gli attributi dell'indice "new_index" appena creato utilizzando il comando "\ d". Come puoi vedere nella foto, questo è un indice di tipo Btree che è stato applicato alle colonne "sname" e "età".

>> \ d new_index;

Crea un indice univoco

Per costruire un indice univoco, assumi la seguente tabella "EMP".

>> Seleziona * da EMP;

Eseguire la query Index Crea univoco nella shell, seguita dal nome dell'indice "Emplind" nella colonna "Nome" della tabella "EMP". Nell'output, è possibile vedere che l'indice univoco non può essere applicato a una colonna con valori duplicati "nome".

>> Creare indice univoco emp (nome);

Assicurati di applicare l'indice univoco solo alle colonne che non contengono duplicati. Per la tabella "EMP", si può presumere che solo la colonna "ID" contenga valori univoci. Quindi, applicheremo un indice univoco ad esso.

>> Creare indice univoco emp (ID);

I seguenti sono gli attributi dell'indice univoco.

>> \ d empid;

Indice di caduta

L'istruzione drop viene utilizzata per rimuovere un indice da una tabella.

>> drop indice emind;

Conclusione

Mentre gli indici sono progettati per migliorare l'efficienza dei database, in alcuni casi non è possibile utilizzare un indice. Quando si utilizza un indice, è necessario prendere in considerazione le seguenti regole:

  • Gli indici non devono essere scacciati per tavoli piccoli.
  • Tabelle con molte operazioni di aggiornamento/aggiornamento in batch su larga scala o aggiunta/inserzione.
  • Per le colonne con una percentuale sostanziale di valori nulli, gli indici non possono essere jumble-
  • vendita.
  • L'indicizzazione dovrebbe essere evitata con colonne regolarmente manipolate.