El documento explica los índices en MySQL y sus tipos. Los índices permiten buscar registros rápidamente almacenando los valores de un campo y un puntero a cada registro, optimizando consultas. Existen índices primarios (únicos y no nulos), índices comunes (pueden ser duplicados o nulos), e índices únicos (valores únicos pero pueden ser nulos). Se recomienda indexar campos con búsquedas frecuentes para mejorar el rendimiento.
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
11. indices en my sql
1. 1
11. ÍNDÍCES EN MYSQL
Para facilitarlaobtenciónde informaciónde unatablase utilizan índices.El índice de unatabla
desempeñalamismafunciónque el índice de unlibro: permite encontrar datos rápidamente;
en el caso de las tablas, localiza registros.
Una tabla se indexaporun campo(o varios).El índice es un tipo de archivo con 2 entradas: un
dato (un valor de algún campo de la tabla) y un puntero.
Un índice posibilitael accesodirectoyrápidohaciendomáseficientelasbúsquedas.Siníndice,
se debe recorrer secuencialmente toda la tabla para encontrar un registro. El objetivo de un
índice esacelerarla recuperaciónde información.Ladesventaja es que consume espacio en el
disco.
La indexación es una técnica que optimiza el acceso a los datos, mejora el rendimiento
acelerando las consultas y otras operaciones. Es útil cuando la tabla contiene miles de
registros.
Los índices se usan para varias operaciones:
para buscar registros rápidamente.
para recuperar registros de otras tablas empleando "join".
Es importante identificarel oloscampos porlos que sería útil crearun índice,aquelloscampos
por los cuales se realizan operaciones de búsqueda con frecuencia.
Hay distintos tipos de índices:
"primary key":esel que definimoscomoclave primaria.Losvalores indexados deben
ser únicos y además no pueden ser nulos. MySQL le da el nombre "PRIMARY". Una
tabla solamente puede tener una clave primaria.
"index": crea un índice común, los valores no necesariamente son únicos y aceptan
valores "null".Podemosdarle unnombre,si nose lodamos,se coloca unopor defecto
("key" es sinónimo de "index"). Puede haber varios por tabla.
"unique": crea un índice para los cuales los valores deben ser únicos y diferentes,
aparece un mensaje de error si intentamos agregar un registro con un valor ya
existente. Permite valores nulos y pueden definirse varios por tabla. Podemos darle
un nombre, si no se lo damos, se coloca uno por defecto.
Todos los índices pueden ser multicolumna, es decir, pueden estar formados por más de 1
campo.
2. 2
Una tabla puede tenerhasta64 índices.Los nombresde índicesaceptan todos los caracteres y
puedentenerunalongitudmáximade 64 caracteres. Pueden comenzar con un dígito, pero no
pueden tener sólo dígitos.
Una tabla puede ser indexada por campos de tipo numérico o de tipo carácter. También se
puede indexar por un campo que contenga valores NULL, excepto los PRIMARY.
Para ver los índices de una tabla podemos utilizar la cláusula SHOW:
Hemosdichoque hay 4 tiposde índicesde losque conocemossolamentedos:laclave primaria
que definimos al momentode crearuna tabla, lasclavesexternassi las hubiera y los campos a
losque se laañadidola restricciónUNIQUE.El que faltaesel tipode índice común: se crea con
"index",losvaloresnonecesariamentesonúnicosyaceptanvalores"null".Puede habervarios
por tabla.
Vamos a ver nuestra BD Neptuno y a la tabla Empleados, vamos a crear unas réplicas de
Empleados con un índice en el campo cargo por el que creemos que haremos consultas
frecuentemente por lo que indexar la tabla por ese campo sería útil.
Podemos crear el índice:
En el momento de crear la tabla (no es una restricción o constraint, es una estructura
de datos interna, ordenada, que usa el motor para optimizar y agilizar las consultas o
actualizaciones sobre las tablas). Detrás de la definición de los campos colocamos
"index" seguido del nombre que le daremos al índice y entre paréntesis el o los
campos por los cuales se indexará dicho índice.
3. 3
Si mostramoslosíndicesde estatabla:
Después de crear la tabla mediante CREATE INDEX. Para borrar ese índice tenemos
que hacer un ALTER TABLE DROP INDEX y el nombre del índice.
Para crear índicespor múltiple camposse listanloscamposdentrode losparéntesisseparados
con comas pero realmente no es lo más utilizado, piensa que esa situación se dará
fundamentalmente en el PRIMARY KEY de las relaciones N:M y ya cada campo está indexado
por separado, así que no es nada habitual un índice de más de un campo.
En cuanto a la informaciónque devuelve laconsultaSHOWINDEXloscamposmás importantes
y realmente los únicos que necesitamos de momento son:
La columna "Table" indica de qué tabla estamos visualizando los índices.
4. 4
La columna "Non_unique" indica si los valores son "no únicos"; para el índice creado
por la clave primaria indica "false" (0), significa que SON únicos, no hay valores
repetidosparaese campo(recuerde loaprendidosobre clave primaria); para el índice
"idx_cargo" y "fk_jefe3" indica "true" (1), es decir, NO son únicos, hay valores
repetidos.
La columna"Key_name"muestrael nombre del índice;parael campocorrespondiente
a la clave primaria tomó el nombre "PRIMARY", "fk_jefe3" para la clave externa de
jefes y el otro nombre es el que le dimos nosotros al definirlo (idx_cargo).
La columna"Column_name" muestra el nombre del campo por el que está ordenado
el índice: "id" para el índice "PRIMARY", "jefe_id" para la clave externa de jefe y
"cargo" para nuestro índice.
La columna"Null"indicasi permite valores nulos; el índice "PRIMARY" no los permite
(NUNCA), el resto de índices en esta tabla si los permite (aparece YES). Si no debe
permitirlos la definir el campo habría que indicar el NOT NULL.
Vamosa ver el otrotipode índice que no hemos visto en un ejemplo, ÚNICO. Un índice único
se crea con "unique",losvaloresdebenserúnicosydiferentes,aparece unmensajede error si
intentamos agregar un registro con un
valor ya existente. Permite valores
nulos y pueden definirse varios por
tabla.Podemosdarle unnombre,si no
se lo damos, se coloca uno por
defecto. Vamos a crear una tabla
"libros" con un campo UNIQUE:
La borramos y la volvemos a crear un índice
sobre ese campo:
Como puedes ver los índices por defecto
admiten valores duplicados. Para crear
un índice de tipo único debes añadir esa
cláusula detrás del create: