Publicidad
Publicidad

Índices en MySQL y el uso de LIKE: guía completa

 Índices en MySQL y el uso de LIKE: guía completa

Los índices en MySQL son una de las claves más importantes para mejorar el rendimiento de las consultas SQL. Sin embargo, no siempre se usan correctamente, especialmente cuando entran en juego operadores como LIKE, BETWEEN o consultas con varias condiciones.

En esta guía completa aprenderás qué son los índices, cuándo se usan, cómo afectan los LIKE al rendimiento, cómo interpretarlos con EXPLAIN y cómo saber si un índice es único. Todo explicado de forma clara, sencilla y orientada a exámenes DAM/ASIR y a la práctica real.


¿Qué es un índice en MySQL?

Un índice es una estructura que permite a MySQL encontrar datos más rápido, evitando recorrer toda la tabla fila por fila.

Es muy parecido al índice de un libro: no lees todo, vas directamente a la página que te interesa.

Sin índices:

  • MySQL hace un escaneo completo de la tabla (ALL)

  • Consultas lentas en tablas grandes

Con índices:

  • Acceso rápido a los datos

  • Menor número de filas leídas

  • Mejor rendimiento

Tipos de índices en MySQL

Índice primario (PRIMARY KEY)

  • Siempre es único

  • No admite valores NULL

  • Solo puede existir uno por tabla

PRIMARY KEY (id)

Índice único (UNIQUE)

  • Garantiza que no haya valores duplicados

  • Puede haber varios por tabla

  • Puede admitir NULL (según motor)

UNIQUE (email)

Índice normal (INDEX o KEY)

  • No es único

  • Permite valores duplicados

  • Se usa para acelerar búsquedas

INDEX (last_name)

¿Los índices primarios son los únicos índices únicos?

 No.

El índice primario es único, pero no es el único índice que puede ser único.

También existen los índices UNIQUE, que igualmente garantizan unicidad.

El índice primario es único, pero además existen índices UNIQUE que también garantizan la unicidad de los datos.

El operador LIKE y los índices

El operador LIKE se usa para buscar patrones de texto, pero no siempre permite usar índices.

LIKE que SÍ usa índice

WHERE nombre LIKE 'Juan%'
  • Busca por prefijo

  • MySQL puede usar índice

  • Tipo de acceso: range


LIKE que NO usa índice

WHERE nombre LIKE '%Juan%'
  • % al inicio

  • MySQL no puede predecir el inicio

  • Escaneo completo de tabla


¿Qué pasa cuando usamos dos LIKE en la misma consulta?

Ejemplo:

WHERE last_name LIKE 'A%'
AND first_name LIKE 'B%'

Aunque ambos LIKE estén bien escritos:

  • MySQL solo puede usar un índice

  • El otro filtro se aplica después

Esto se conoce como uso parcial del índice.

Regla mental rápida

  • 1 LIKE 'texto%' → índice OK

  • 2 LIKE 'texto%' → índice usado a medias

  • %texto% → sin índice


Índices compuestos y LIKE

Un índice compuesto:

INDEX(last_name, first_name)

Solo se aprovecha completamente si:

  • El primer campo está fijado (=)

  • Solo hay un rango

Dos LIKE generan dos rangos, por lo que el índice compuesto no se aprovecha entero.


Cómo saber si una consulta usa índice: EXPLAIN

EXPLAIN muestra cómo MySQL ejecuta una consulta.

Columnas clave que debes mirar

key

  • Índice que se usa realmente

  • NULL → no se usa índice

possible_keys

  • Índices que podría usar

type

  • range → correcto con LIKE

  • ALL → escaneo completo

rows

  • Número estimado de filas leídas

  • Cuanto menor, mejor

Cómo saber si un índice es único

Opción 1: SHOW INDEX

SHOW INDEX FROM employees;

Columna clave: Non_unique

  • 0 → índice único

  • 1 → índice no único


Índices en MySQL y el uso de LIKE: guía completa



Opción 2: Ver la tabla directamente

SHOW CREATE TABLE employees;

Ahí verás:

  • PRIMARY KEY

  • UNIQUE KEY

  • KEY


Índices en MySQL y el uso de LIKE: guía completa


Buenas prácticas con índices y LIKE

  • Evita % al inicio

  • Usa un solo LIKE cuando sea posible

  • Prioriza valores exactos (=)

  • Usa índices compuestos con cabeza bien definida

  • Analiza siempre con EXPLAIN

Índices compuestos y LIKE

Un índice compuesto:

INDEX(last_name, first_name)

Solo se aprovecha completamente si:

  • El primer campo está fijado (=)

  • Solo hay un rango

Dos LIKE generan dos rangos, por lo que el índice compuesto no se aprovecha entero.

Cómo saber si una consulta usa índice: EXPLAIN

EXPLAIN muestra cómo MySQL ejecuta una consulta.

Columnas clave que debes mirar

key

  • Índice que se usa realmente

  • NULL → no se usa índice

possible_keys

  • Índices que podría usar

type

  • range → correcto con LIKE

  • ALL → escaneo completo

rows

  • Número estimado de filas leídas

  • Cuanto menor, mejor

Cómo saber si un índice es único

Opción 1: SHOW INDEX

SHOW INDEX FROM employees;

Columna clave: Non_unique

  • 0 → índice único

  • 1 → índice no único

Opción 2: Ver la tabla directamente

SHOW CREATE TABLE employees;

Ahí verás:

  • PRIMARY KEY

  • UNIQUE KEY

  • KEY

Optimización avanzada: MATCH, AGAINST, índices compuestos y FULLTEXT

Cuando las búsquedas con LIKE no son suficientes o empiezan a ser lentas, MySQL ofrece alternativas mucho más eficientes para trabajar con texto y múltiples columnas.

Índices compuestos: cuándo y cómo usarlos

Un índice compuesto está formado por varias columnas en un mismo índice:

INDEX(last_name, first_name)

Cómo funciona un índice compuesto

MySQL solo aprovecha correctamente un índice compuesto si:

  • Se filtra por la primera columna del índice

  • La primera columna usa igualdad (=)

  • Solo hay un rango (LIKE, BETWEEN)

Ejemplo óptimo:

WHERE last_name = 'García'
AND first_name LIKE 'A%'

Ejemplo NO óptimo:

WHERE last_name LIKE 'G%'
AND first_name LIKE 'A%'

Aquí hay dos rangos, por lo que el índice compuesto no se aprovecha completamente.

Regla mental

  • Igualdad primero (=)

  • Rango después (LIKE, BETWEEN)

Búsquedas de texto avanzadas: FULLTEXT

Cuando necesitas buscar palabras dentro de textos largos (descripciones, artículos, posts), LIKE deja de ser eficiente.

Para eso existe el índice FULLTEXT.

FULLTEXT (contenido)

Ventajas de FULLTEXT

  • Mucho más rápido que LIKE '%texto%'

  • Permite búsquedas por relevancia

  • Ideal para blogs, artículos y descripciones

MATCH y AGAINST: cómo funcionan

Las búsquedas FULLTEXT se hacen con MATCH ... AGAINST:

SELECT *
FROM posts
WHERE MATCH(contenido)
AGAINST('mysql índices' IN NATURAL LANGUAGE MODE);

Modos de búsqueda

NATURAL LANGUAGE MODE

  • Busca por relevancia

  • Ordena resultados automáticamente

  • Ideal para buscadores internos

BOOLEAN MODE

  • Permite operadores avanzados

AGAINST('+mysql +índices -like' IN BOOLEAN MODE)

Operadores comunes:

  • + obligatorio

  • - excluir

  • * comodín

FULLTEXT vs LIKE

CaracterísticaLIKEFULLTEXT
Usa índiceA veces
% al inicioNo eficienteNo necesario
RelevanciaNo
Textos largosMaloExcelente

Cuándo usar cada cosa

  • LIKE 'texto%' → búsquedas simples

  • Índices compuestos → filtros por varias columnas

  • FULLTEXT + MATCH AGAINST → buscadores y texto largo

En SQL (especialmente MySQL), cuando hablamos de CREATE INDEX, hay varios tipos de índices. Te los enumero y te pongo ejemplos claros.

INDEX (índice normal)

Es el más básico.
Sirve para acelerar búsquedas, pero permite valores repetidos.

Ejemplo

CREATE INDEX idx_nombre ON clientes(nombre);

Se usa cuando buscas mucho por nombre.

UNIQUE INDEX (índice único)

No permite valores duplicados en la columna.

Ejemplo

CREATE UNIQUE INDEX idx_email ON usuarios(email);

Ideal para emails, DNI, usuario, etc.

PRIMARY KEY (clave primaria)

Es un índice especial:

  • No admite NULL

  • No admite duplicados

  • Solo puede haber uno por tabla

Ejemplo

CREATE TABLE productos ( id INT PRIMARY KEY, nombre VARCHAR(50) );

MySQL crea el índice automáticamente.

INDEX compuesto (índice de varias columnas)

Usa más de una columna en el mismo índice.

Ejemplo

CREATE INDEX idx_nombre_ciudad ON clientes(nombre, ciudad);

Muy útil cuando haces:

WHERE nombre = 'Ana' AND ciudad = 'Madrid'

FULLTEXT INDEX

Se usa para búsquedas de texto (palabras, frases).

Ejemplo

CREATE FULLTEXT INDEX idx_descripcion ON productos(descripcion);

 Se usa con:

SELECT * FROM productos WHERE MATCH(descripcion) AGAINST('oferta');

INDEX en clave foránea (FOREIGN KEY)

Cuando creas una clave foránea, MySQL crea un índice automáticamente.

Ejemplo

CREATE TABLE pedidos ( id INT PRIMARY KEY, cliente_id INT, FOREIGN KEY (cliente_id) REFERENCES clientes(id) );

Ayuda a que las relaciones sean rápidas.


Resumen rápido

Tipo de índice¿Duplicados?Uso principal
INDEXBúsquedas normales
UNIQUENoValores únicos
PRIMARY KEYNoIdentificador principal
CompuestoDependeVarias columnas
FULLTEXTBúsqueda por texto
FOREIGN KEYRelaciones entre tablas

Preguntas frecuentes (FAQ)

¿Dos LIKE siempre rompen el índice?

No lo rompen, pero MySQL solo usará uno de ellos.

¿Un índice UNIQUE mejora el rendimiento?

Sí, además de garantizar unicidad, acelera búsquedas.

¿Qué significa key = NULL en EXPLAIN?

Que MySQL no está usando ningún índice.

¿LIKE siempre es malo?

No. LIKE 'texto%' es perfectamente válido y eficiente

El uso de los indices

Entender cómo funcionan los índices y el operador LIKE es fundamental para escribir consultas eficientes en MySQL. Saber interpretar EXPLAIN, distinguir índices únicos y normales, y evitar errores comunes marca la diferencia tanto en exámenes como en proyectos reales.

Si trabajas con bases de datos grandes, los índices no son opcionales: son obligatorios.

Seguir leyendo:


Comentarios

Publicidad

Entradas populares de este blog

Solución de errores de registro en Kodi

INNER JOIN, LEFT JOIN, RIGHT JOIN y UNION en MySQL: Guía Completa con Ejemplos

Cómo cambiar el idioma en Windows 11: guía completa paso a paso

Cómo Hacer Ping de Navegación a Google: Guía Completa Paso a Paso

Cómo crear un USB booteable de Linux Mint 20.1 paso a paso

Instalar programas con un solo clic: instalación desatendida con Silent Install Builder

Cómo crear una función en MySQL para obtener la ciudad de un cliente por su ID

Cómo borrar la cronología de Google Maps: guía paso a paso para proteger tu privacidad

Gana dinero con el Reproductor para Educación de YouTube Studio

Procedimientos en MySQL: Qué son, cómo se crean e invocan

Publicidad

¿Qué aprenderás en Bit Área de informática para profesionales?

¡Bienvenid@ a Bit Área de Informática! Tu espacio de referencia para aprender, optimizar y dominar la tecnología. Nos especializamos en guías detalladas y actualizadas sobre Windows, Linux y Android, junto con trucos, consejos y soluciones técnicas pensadas para profesionales y entusiastas de la informática. Nos apasiona mantenerte al día de las últimas tendencias en aplicaciones. Analizamos innovaciones, desglosamos funciones, compartimos recomendaciones y ofrecemos información detallada para que siempre estés a la vanguardia del mundo digital. Desde apps esenciales para productividad hasta las más divertidas para entretenimiento, te ayudamos a descubrir lo último en tecnología y sacarle el máximo provecho.
Junto a nosotros, aprenderás a reparar, optimizar y gestionar tus sistemas y dispositivos, así como a liberar espacio, solucionar problemas comunes y simplificar tu vida diaria. En Bit Área de Informática, transformamos el conocimiento en resultados: explora, aprende y domina la tecnología mientras te mantienes a la vanguardia del futuro digital. ¡Forma parte de nuestra comunidad!
Publicidad