Oracle Create Index

Oracle Create Index



A les bases de dades Oracle, un índex fa referència a una estructura de dades que avança la velocitat de les operacions de recuperació de dades en una taula de base de dades. Tanmateix, això pot comportar una penalització d'operacions d'escriptura addicionals i espai d'emmagatzematge a la vostra base de dades.

Un exemple d'on seria útil un índex de base de dades és en un sistema de gestió de relacions amb els clients.







En aquest sistema, podem tenir una taula de base de dades que emmagatzema la informació del client. Això podria incloure el nom, l'adreça, les formes de pagament, la informació de contacte, etc.



Si la taula conté molts registres, potser milions d'ells, pot trigar molt de temps i recursos cercar informació específica del client a la base de dades. Aquest és un fenomen negatiu, especialment en bases de dades on el rendiment és crític.



Per circumnavegar això, podem utilitzar un índex de base de dades.





Per exemple, podem crear un índex a la columna del nom del client que permetria al sistema de bases de dades trobar i recuperar ràpidament la informació d'un client específic mitjançant el nom. Per tant, en lloc que el motor de base de dades recorre totes les files i columnes de la taula, només utilitza l'índex per buscar informació del client.

En aquest tutorial, aprendràs a utilitzar l'ordre CREATE INDEX a la base de dades Oracle per inicialitzar un nou índex.



Oracle Create Index Statement

A continuació es mostra la sintaxi de la instrucció CREATE INDEX a les bases de dades Oracle:

CREATE INDEX nom_índex
ON nom_taula (columna1, columna2, ...);

La sintaxi anterior crea un índex anomenat nom_índex a la taula amb el nom nom_taula utilitzant les columnes especificades (columna1, columna2, etc.) com a clau per a l'índex.

A Oracle, una clau primària és una columna o conjunt de columnes que identifica de manera única cada fila d'una taula. Per defecte, Oracle crea automàticament un índex únic a les columnes de clau primària d'una taula per aplicar la restricció d'unicitat i millorar el rendiment de les cerques de clau primària.

Tanmateix, en alguns casos, és possible que hàgiu de crear manualment un nou índex per a una taula específica.

Vegem alguns exemples de com podem aconseguir-ho.

Exemple de creació d'índex d'Oracle

Suposem que tenim una taula que conté la informació dels empleats tal com es mostra a la sortida següent:

seleccioneu nom, cognom, sou, data de contractació dels EMPLEATS;

Oracle Crea índex per a una sola columna

Suposem que volem crear un índex utilitzant la columna first_name. Podem executar una consulta com es mostra:

crear l'índex first_name_lookup a EMPLOYEES(FIRST_NAME);

Aquesta instrucció CREATE INDEX crea un índex anomenat first_name_lookup a la taula EMPLOYEES, utilitzant la columna FIRST_NAME com a clau per a l'índex. Aquest índex es pot utilitzar per millorar el rendiment de les consultes que cerquen empleats pel seu nom.

Un cop tenim l'índex creat, el podem utilitzar per cercar un empleat específic tal com es mostra:

SELECCIONA el nom, els cognoms, el sou, la data de la contractació
DELS empleats
WHERE first_name = 'Guillermo';

Resultat:

Sense l'índex first_name_lookup, el sistema de base de dades hauria d'escanejar tota la taula EMPLOYEES per trobar totes les files on la columna FIRST_NAME és igual a 'William'. Tanmateix, amb l'índex al seu lloc, el sistema de base de dades pot buscar ràpidament les files del indexeu utilitzant el valor 'John' com a clau i després recupereu les files sol·licitades de la taula, que serà molt més ràpida.

Podeu veure els passos utilitzats en fer la consulta mitjançant l'ordre explicar el pla tal com es mostra:

expliqueu el pla de SELECT first_name, last_name, salari, hire_date
DELS empleats
WHERE first_name = 'Guillermo';

Pla de consulta resultant:

Exemple 2: Oracle Crea un índex amb diverses columnes

De la mateixa manera, podem crear un índex format per més d'una columna en una taula determinada. Per exemple, suposem que volem crear un índex format per la columna first_name i last_name.

Podem utilitzar el codi tal com es mostra:

crear un índex multi_lookup a EMPLOYEES (NOM, COGNOM);

Aquesta instrucció CREATE INDEX crea un índex anomenat multi_lookup a la taula EMPLOYEES, utilitzant les columnes FIRST_NAME i LAST_NAME com a clau per a l'índex.

Un cop creat, podem utilitzar aquest índex tal com es mostra a la consulta de mostra com es mostra:

SELECCIONA el nom, els cognoms, el sou, la data de la contractació
DELS empleats
WHERE first_name = 'William' AND last_name = 'Smith';

Valor resultant:

I allà, teniu un mètode per accelerar les consultes de la vostra base de dades mitjançant índexs per limitar l'abast de la cerca.

Conclusió

La sentència CREATE INDEX a Oracle ens permet crear un índex en una taula per millorar el rendiment de les operacions de recuperació de dades. Tanmateix, tot i que els índexs poden millorar el rendiment de les consultes, també incorren en penalitzacions d'espai d'emmagatzematge, la qual cosa comporta operacions de velocitat d'escriptura reduïdes, els utilitzeu només quan sigui necessari.