miércoles, 27 de abril de 2011

INDICES

Clase :15/abril/2011
INDICES EN MYSQL

Los indices son un grupo de datos que MYSQL asocia en una o varias columnas de la tabla,en este grupo de datos aparece la relación con el contenido y el numero de la fila donde este ubicado.


Estos indices nos sirven para poder agilizar las consultas en una base de datos o en si en las tablas,para crear el indice lo podemos hacerlo a la misma vez que creamos la tabla,usando la palabra INDEX seguido el nombre del indice que se quiere crear y sus respectivas columnas. 
  
La sintaxis del indice como tal es: 

  •  PRIMARY KEY (nombre_columna_1 [,nombre_columna2...]) UNIQUE INDEX nombre_indice    (columna_indexada1 [,columna_indexada2 ...]) INDEX nombre_index (columna_indexada1 [,columna_indexada2...])
Cuando queremos crear el indice en una tabla ya creada se debe hacer así:
  • ALTER TABLE nombre_tabla ADD INDEX nombre_indice (columna_indexada); 
Si queremos eliminar un indice ya creado es así: 
  • ALTER TABLE nombre_tabla DROP INDEX nombre_indice
Los indices son apuntadores a los campos en una tabla que permiten: 
  1. Agilizar el acceso al contenido en una consulta por el campo referido.
  2. Restringir la inserción de datos en una tabla.
  • No se puede eliminar un indice si es de tipo UNIQUE y existen registros.
  • Cuando existan registros duplicados no se pueden crear indices tipo UNIQUE.
  • Un indice para dos o mas campos es UNIQUE siempre y cuando los campos referenciados no sean duplicados.
  • Dos indices no pueden tener el mismo nombre.
  " Las llaves primarias siempre son indices"
  "Los indices pueden apuntar 2 o mas campos en una misma tabla"


¿Para que sirve un indice?


Los indices nos permiten tener una mayor rapidez a la hora de la ejecución de las consultas de base de datos tipo SELECT....WHERE. Hay dos reglas para poder crear un indice y son :

  1. Para poder crear el indice que deseas tiene que ser en la columna que vayas a usar con la clausura WHERE y no crearlo con aquellas columnas que utilicen SELECT.
  2. Es mejor indexar una columna que presente valores distintos.

La sintaxis de Indice:

CREATE  INDEX [UNIQUE] <nombre_indice> ON <nombre_tabla> (campo1, campo2)

EJEMPLO CLASE: 


CREATE TABLE departamentos 
(clave INT AUTO_INCREMENT PRIMARY KEY COMMENT 'clave principal',
nombre CHAR(50) NOT NULL,
ubicacion CHAR(50) NULL DEFAULT 'principal'
);
INSERT INTO departamentos VALUES 
('DEFAULT','cartera','principal'),
('DEFAULT','contabilidad','principal')

CREATE INDEX index_nombre
ON departamentos (nombre)

ALTER TABLE departamentos
DROP indx_nombre

CREATE UNIQUE INDEX indx_nombre
ON departamentos (nombre)


No hay comentarios:

Publicar un comentario