Sobes.tech
Middle

¿Qué tipos de índices existen en SQL?

sobes.tech AI

Respuesta de la IA

  • Árbol B (B-tree): El tipo más común. Adecuado para la mayoría de las operaciones de lectura, incluyendo WHERE, LIKE, ORDER BY.

    CREATE INDEX idx_column ON table_name (column_name);
    
  • Hash (Hash): Optimizado para coincidencias exactas (=). No soporta consultas de rango ni ordenamiento.

    -- Ejemplo de sintaxis, puede variar según el SGBD
    CREATE INDEX idx_column ON table_name USING HASH (column_name);
    
  • Texto completo (Full-Text): Utilizado para búsqueda en texto en campos de texto grandes (VARCHAR, TEXT).

    -- Ejemplo de sintaxis en MySQL
    CREATE FULLTEXT INDEX idx_text ON table_name (text_column);
    -- Ejemplo de sintaxis en PostgreSQL
    CREATE INDEX idx_text ON table_name USING GIN (to_tsvector('russian', text_column));
    
  • Espacial (Spatial): Para indexar datos geográficos (puntos, líneas, polígonos). Usados con tipos de datos como GEOMETRY o GEOGRAPHY.

    -- Ejemplo de sintaxis en MySQL
    CREATE SPATIAL INDEX idx_geo ON table_name (spatial_column);
    -- Ejemplo de sintaxis en PostgreSQL
    CREATE INDEX idx_geo ON table_name USING GIST (spatial_column);
    
  • GIN (Índice Invertido Generalizado) y GiST (Árbol de Búsqueda Generalizado) en PostgreSQL: Tipos de índices flexibles, adecuados para diversas tareas, incluyendo búsqueda de texto completo, indexación de arrays y JSON.

  • Clúster (Clustered): Define el orden físico de las filas en la tabla. Una tabla puede tener solo un índice clúster. Frecuentemente basado en la clave primaria.

    -- Al declarar la clave primaria, a menudo se crea un índice clúster
    CREATE TABLE table_name (
        id INT PRIMARY KEY CLUSTERED, -- En SQL Server
        ...
    );
    
  • No clúster (Non-Clustered): Estructura de datos separada que almacena pares "valor de columna (o columnas) + puntero a la fila de datos". La tabla puede tener múltiples índices no clúster.

Comparación:

Tipo de índice Aplicación Operaciones
Árbol B (B-árbol) General, la mayoría de los tipos de datos =, <, >, <=, >=, BETWEEN, LIKE (inicio)
Hash Coincidencia exacta (=) =
Texto completo Búsqueda en texto MATCH AGAINST (MySQL), to_tsquery (PostgreSQL)
Espacial Datos geográficos Funciones espaciales
Clúster Ordenamiento físico de filas Acelera la selección de rangos
No clúster Acelera la búsqueda en columnas indexadas =, <, >, <= y otros