SQL INDEX
Brandon M. · 1 de junio de 2026
¿Pa qué sirve?
Pues pa crear indices, jsjsjs, básicamente si tuviéramos una tabla con muchos registros acá miles y miles, pues si nosotros hiciéramos una consulta mediante un SELECT con respectivo WHERE nos ayudaría a que la consulta fuera mas rápida.
¿Como se usa?
Es sencillo pero tienes que tener cuidado de no sobre usarlo (aunque no hay una regla super especifica), en general es hacer un indice sobre columnas que se vayan a utilizar constantemente no sobre crear indices sobre todas las columnas ya que esto puede salir chueco y hacer mas lento el sistema, la sintaxis básica es la siguiente:
CREATE INDEX nombre_del_indice
ON nombre_de_la_tabla (columna1, columna2, ...);Indice con una columna
Eso si pana, las columnas que agregues quedaran en un solo indice va tiene que meterle coco para saber que columnas y meter y etc. Para poner un ejemplo con la tabla de consolas que creamos con el CREATE TABLE podríamos crear dos indices uno con una sola columna y otra con dos columnas con casos de uso distinto, va? para iniciar el de una columna:
CREATE INDEX idx_consolas_nombre
ON consolas (nombre_consola);Bueno ya tenemos el indice pero, para que nos sirve esta madre? es sencillo sin el indice (y suponiendo que tenemos miles de registros) una consulta por ejemplo:
SELECT * FROM consolas WHERE nombre_consola = 'Xbox 360 Edición Halo 3';Podría tardar mucho ya que hará una búsqueda secuencial, es decir revisara todos los registros, uno por uno para asegurar que no se le pase uno, sin embargo con el indice básicamente imagina que es una tabla donde guarda el nombre de la consola y el bloque de memoria, entonces si ejecutamos la consulta anterior el RDBMS primero dice "hey, yo tengo un indice ya organizado" entonces primero va y busca sobre las "X" y si encuentra alguna coincidencia simplemente toma el bloque donde esta y retrae la información, en lugar de buscar registro por registro, entonces en lugar de tardar no se 15 segundos puedes reducir hasta que sea de 1 segundo la consulta.
Indice con dos columnas (compuesto)
y para que serviría crear un indice con varias columnas? pues si sirve we, y en mi experiencia en dos casos específicos, pro ejemplo si se ocupa filtrar con por varios campos o si solo vamos a regresar ciertos datos específicos, vamos a crear un indice compuesto:
CREATE INDEX idx_fab_nom
ON consolas (fabricante, nombre_consola);Con este básicamente seria un indice con el fabricante, el nombre de la consola y su lugar en memoria eda?
Escenario 1: Consultas con AND
Supongamos que nosotros ejecutamos:
SELECT * FROM consolas
WHERE fabricante = 'Microsoft' AND anio_lanzamiento = 2005;Si tuviéramos un indice único con la de fabricante, pues si descartaríamos todas las consolas de Sony o Nintendo, pero aun tendríamos que navegar entre todos los registros de Microsoft, supongamos que son 40k pues son 40k de registros en los que vamos a tener que navegar para ver si cumple el año de lanzamiento igual a 2005, pero con el indice compuesto anterior pues simplemente buscaríamos el bloque Microsfot-2005 en el indice me doy a entender? ya que el indice va a estar ordenado.
Escenario 2: consulta especifica
Básicamente eso, si vamos a tener una consulta repetitiva, en donde consultaríamos fabricante y año va a ser mas rápido ya que esos datos ya están directamente en el indice, wao paps que pasado de verdura y camote eda?
Conclusión
Los indices son super-poderosos, cuando se utilizan bien, debes tener cuidado como los usas y cuando no solamente crear indices por crear, cuando no conviene seria en estos casos:
- En tablas de alta escritura (INSERT, UPDATE, DELETE constantes).
- En columnas con baja variedad de datos (pocos valores distintos, como Sí/No o Género).
- En tablas muy pequeñas (con menos de 500 filas).
- En columnas que casi nunca usas en el WHERE o en los JOIN.
- En columnas con textos gigantescos (campos tipo TEXT o BLOB).
Referencias
- W3Schools.com. (s. f.). https://www.w3schools.com/sql/default.asp