Está en la página 1de 19

JORGE ERNESTO PARRA VAZQUEZ JORGE GAYBRIEL LOPEZ MARTINEZ JAIME FERNANDO RODRIGUEZ VILLALOBOS JOSE ALBERTO CASTILLO

CORONEL

CREACION DE INDICES
INDICES DE CLAVE PRIMARIA INDICE ORDINARIO INDICE DE TEXTO COMPLETO INDICES UNICOS INDICES COMPUESTOS INDICES DE PARTE DE CAMPOS

INDICES DE CLAVE PRIMARIA


Una clave primaria es un ndice sobre uno o ms campos donde cada valor es nico y ninguno de los valores son NULL. Para crear un indice de clave primaria tenemos dos opciones 1.-Crear el ndice de clave primaria al momento de crear la tabla. En este caso se usa la opcin PRIMARY KEY al final de la definicin de los campos, con una lista de los campos que sern parte del ndice. CREATE TABLE nombreTabla(campo1 tipoDato, [campo2...,] PRIMARY KEY (campo1 [,campo2...]) );

2.-Crear una clave primaria en una tabla existente con el uso del comando ALTER TABLE: ALTER TABLE nombreTabla ADD PRIMARY KEY(campo1 [,campo2...]);

Para observar los cambios que hemos hecho, podemos examinar las columnas de la tabla usuarios con una sentencia DESCRIBE:
mysql> DESCRIBE usuarios; +-----------+-------------+------+----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | id | int(11) | | PRI | 0 | | | nombre | varchar(50) | YES | | NULL | | | apellidos | varchar(70) | YES | | NULL | | +-----------+-------------+------+-----+---------+------+ 3 rows in set (0.00 sec)

INDICES ORDINARIOS
Un ndice que no es primario permite valores duplicados (a menos que los campos hayan sido especificados como UNIQUE). Para crear un ndice ordinario tenemos bsicamente dos opciones: Podemos crear un ndice ordinario al mismo tiempo que creamos la tabla con el uso de la opcin INDEX. CREATE TABLE nombreTabla(campo1 tipoDato, campo2 tipoDato,.. INDEX [nombreIndice] (campo1 [,campo2...]));

2.-De igual manera, podemos crear el ndice con el uso de la sentencia ALTER TABLE si es que la tabla ya existe. ALTER TABLE nombreTabla ADD INDEX [nombreIndice] (campo1 [,campo2...]); Tambin es posible usar la sentencia CREATE INDEX para crear un ndice en una tabla existente. CREATE INDEX nombreIndice ON nombreTabla(campo1 [,campo2...]); Ambas sentencias piden el nombre del ndice, sin embargo con la sentencia CREATE INDEX el nombre es obligatorio.

INDICES DE TEXTO COMPLETO


Los ndices de texto completo son del tipo FULLTEXT, se usan en tablas del tipo MyISAM, y pueden contener uno o ms campos del tipo CHAR, VARCHAR y TEXT. Un ndice de texto completo est diseado para facilitar y optimizar la bsqueda de palabras clave en tablas que tienen grandes cantidades de informacin en campos de texto. Para crear un ndice de texto completo tenemos bsicamente dos opciones:

Crear el ndice al momento de crear la tabla. CREATE TABLE nombreTabla( campo1 TIPO, campo2 TIPO, FULLTEXT [nombreIndice] (campo1 [campo2,...]) );

Crear el ndice una vez que ha sido creada la tabla. ALTER TABLE nombreTabla ADD FULTEXT [nombreIndice] (campo1 [,campo2,...]); La siguiente sentencia tambin se puede usar para crear un ndice cuando la tabla ya existe. CREATE FULLTEXT INDEX nombreIndice ON nombreTabla(campo1 [,campo2,...]);

INDICES UNICOS
Los ndices nicos son bsicamente como los ndices ordinarios, excepto que los valores duplicados no son permitidos. Para crear un ndice UNIQUE se tienen bsicamente dos opciones:

Crear un ndice nico cuando la tabla es creada con el uso de la opcin UNIQUE. CREATE TABLE nombreTabla(campo1 tipoDato, campo2 tipoDato,.. UNIQUE [nombreIndice] (campo1 [,campo2...]));

2.-O bien, si la tabla ya existe, se usa la sentencia ALTER TABLE. ALTER TABLE nombreTabla ADD UNIQUE [nombreIndice] (campo1, campo2) ... De igual manera, tambin es posible usar la sentencia CREATE INDEX para crear un ndice nico en una tabla existente. CREATE UNIQUE INDEX nombreIndice ON nombreTabla(campo1 [,campo2...]);

INDICES COMPUESTOS
Los ndices compuestos son simplemente aquellos que estn basados en mltiples columnas. MySQL nicamente usa un ndice por tabla cuando est procesando una consulta. Esto significa que si tenemos varias columnas que frecuentemente aparecen juntas en una clusula WHERE, tenemos la oportunidad de acelerar estas consultas al crear un ndice compuesto.

Si una tabla tiene un ndice formado por mltiples columnas, cualquier prefijo ms a la izquierda puede ser usado por el optimizador de consultas de MySQL para encontrar las filas. Por ejemplo, si tenemos un ndice compuesto por tres columnas (col1, col2, col3), tendramos capacidades de bsqueda en (col1), (col1, col2) y (col1, col2, col3).

MySQL no puede usar un ndice parcial si las columnas no forman un prefijo ms a la izquierda del ndice. Supongamos que tenemos unas sentencias SELECT como estas: mysql> SELECT * FROM algunaTabla WHERE col1=valor1; mysql> SELECT * FROM algunaTabla WHERE col2=valor2; mysql> SELECT * FROM algunaTabla WHERE col2=valor2 AND col3=valor3;

La idea es que los ndices compuestos pueden usarse frecuentemente para acelerar algunas consultas complejas, pero necesitamos entender sus limitaciones y debemos ejecutar algn tipo de prueba en vez de asumir que estos ndices siempre nos van a ayudar.

INDICES DE PARTE DE CAMPOS


En las columnas CHAR y VARCHAR se nos permite crear un ndice que no use el campo por completo. Retomemos el ejemplo anterior de la tabla usuarios. A pesar de que el nombre de una persona puede ser de hasta 50 caracteres, es muy comn que los nombres de las personas sean diferentes en los primeros 10 caracteres. Al usar un ndice de 10 caracteres en lugar de 50, el ndice ser ms pequeo, y permitir que las consultas INSERT y UPDATE sean ms rpidas, a la vez que no se afecta la velocidad de las consultas SELECT.

Para crear un ndice como parte de un campo, slo se tiene que especificar el tamao entre parntesis despus del nombre de la columna. Por ejemplo, nuestro ndice idx_nombre pudo haber sido creado tambin de la siguiente manera: ALTER TABLE usuarios ADD INDEX idx_nombre(nombre(10), apellidos(20));

También podría gustarte