CREATE [ UNIQUE ] INDEX nombre_indice ON tabla [ USING nombre_acceso ] ( columna [ nombre_operador] [, ...] ) CREATE [ UNIQUE ] INDEX nombre_indice ON tabla [ USING nombre_acceso ] ( nombre_funcion( r">columnale> [, ... ]) nombre_operador ) |
Proboca que el sistema compruebe si existen valores duplicados en la tabla cuando se crea el �ndice (si ya existen datos) y cada vez que se a�aden datos. Los intentos de insertar o actualizar datos duplicados generar�n un error.
El nombre del �ndice que se debe crear.
El nombre de la tabla para la que se quiere crear un �ndice.
El nombre del m�todo de acceso que se utilizar� para el �ndice. El m�todo de acceso de defecto es BTREE. Postgres proporciona tres m�todos de acceso para �ndices secundarios.
una implementaci�n de los btrees de alta concurrencia de Lehman-Yao.
Implementa rtrees est�ndar utilizando el algoritmo de partici�n cuadr�tica de Guttman.
Una implementaci�n de las dispersiones lineales de Litwin.
El nombre de una columna de la tabla.
Una clase de operadores asociada. Vea m�s abajo para obtener m�s detalles.
Una funci�n definida por el usuario, que devuelve un valor que puede ser indexado.
CREATE INDEX construye un �ndice nombre_indice en la tabla especificada.
Los �ndices se utilizan principalmente para incrementar el rendimiento de una base de datos. Sin embargo, un uso inapropiado de los �ndices dar� lugar a una base de datos m�s lenta. |
En la primera sintaxis mostrada antes, los campos claves para el �ndice se especifican como nombres de columna; una columna puede tener tambi�n una clase de operadores asociada. Una clase de operadores se utiliza para especificar los operadores que se utilizar�n para un �ndice particular. Por ejemplo, un �ndice btree sobre enteros de cuatro_bytes deber�a utilizar la clase int4_ops; esta clase de operadores incluye funciones de comparaci�n para enteros de cuatro_bytes. La clase de operadores de defecto es la apropiada para ese tipo de datos.
En la segunda sintaxis mostrada antes, se defin�a un �ndice como resultado de una funci�n definida por el usuario nombre_funcion aplicada a uno o m�s atributos de una �nica clase. Estos �ndices funcionales pueden utilizarse para conseguir un acceso r�pido a datos basados en operadores que normalmente requerir�an alg�n tipo de transformaci�n para aplicarlos a la base de datos.
Postgres proporciona m�todos de acceso btree, rtree y hash para los �ndices secundarios. El m�todo de acceso btree es una implementaci�n de los btrees de alta concurrencia de Lehman-Yao. El m�todo de acceso rtree implementa el algoritmo de partici�n cuadr�tica est�ndar de Guttman. El m�todo de acceso hash es una implementaci�n de las dispersiones lineales de Litwin. Mencionamos los algoritmos utilizados s�lamente para indicar que todos estos m�todos de acceso son completamente din�micos, y no necesitan ser optimizados peri�dicamente (como es el caso, por ejemplo, de los m�todos de acceso de hash est�tico).
El optimizador de consultas de Postgres considerar� que est� usando �ndices btree en un barrido, siempre que un atributo indexado est� involucrado en una comparaci�n que utilice uno de los siguientes: <, <=, =, >=, >
Ambas clases de caja (box) soportan �ndices en el tipo de datos caja (box) en Postgres. La diferencia entre ellas es que bigbox_ops escala coordenadas de caja hacia abajo, para impedir excepciones de punto flotante que se pudiesen producir en multiplicaciones, sumas y restas de coordenadas de punto flotante muy grandes. Si el campo al cual se unen sus rect�ngulos es de alrededor de 20.000 unidades cuadradas o mayor, deber�a usted utilizar bigbox_ops. La clase de operadores poly_ops soporta �ndices rtree en datos poligonales.
El optimizador de consultas de Postgres considerar� que est� utilizando un indice rtree siempre que un atributo indexado est� involucrado en una comparaci�n que utilice uno de los siguientes: <<, &<, &>, >>, @, ~=, &&
El optimizador de consultas de Postgres considerar� que est� utilizando un �ndice hash siempre que un atributo del �ndice est� involucrado en una comparaci�n que utilice el operador =.
Actualmente, s�lo el m�todo de acceso BTREE soporta �ndices multi-columna. Se pueden especificar hasta 7 claves.
Utilice DROP INDEX para eliminar un �ndice.
La clase de operadores int24_ops se puede utilizar para construir �ndices sobre datos int2, y realizar comparaciones contra datos int4 en cualificaciones de consultas. Similarmente, int42_ops soporta �ndices sobre datos int4 que deben ser comparados con datos int2 en las consultas.
La siguiente lista select devuelve todos los nombres de operador:
SELECT am.amname AS acc_name, opc.opcname AS ops_name, opr.oprname AS ops_comp FROM pg_am am, pg_amop amop, pg_opclass opc, pg_operator opr WHERE amop.amopid = am.oid AND amop.amopclaid = opc.oid AND amop.amopopr = opr.oid ORDER BY acc_name, ops_name, ops_comp |
Para crear un �ndice en el campo t�tulo en la tabla pel�culas:
CREATE UNIQUE INDEX �ndice_t�tulo ON pel�culas (t�tulo); |