Sobes.tech
Middle

Ce tipuri de indecși există în SQL?

sobes.tech AI

Răspuns de la AI

  • Arbore B (B-Tree): Cel mai răspândit tip. Potrivit pentru majoritatea operațiunilor de citire, inclusiv WHERE, LIKE, ORDER BY.

    CREATE INDEX idx_column ON table_name (column_name);
    
  • Hash (Hash): Optimizat pentru potriviri exacte (=). Nu suportă interogări de interval sau sortare.

    -- Exemplu de sintaxă, poate varia în funcție de SGBD
    CREATE INDEX idx_column ON table_name USING HASH (column_name);
    
  • Text complet (Full-Text): Folosit pentru căutare în câmpuri de text mari (VARCHAR, TEXT).

    -- Exemplu de sintaxă în MySQL
    CREATE FULLTEXT INDEX idx_text ON table_name (text_column);
    -- Exemplu de sintaxă în PostgreSQL
    CREATE INDEX idx_text ON table_name USING GIN (to_tsvector('russian', text_column));
    
  • Spațial (Spatial): Pentru indexarea datelor geografice (puncte, linii, poligoane). Folosit cu tipuri de date precum GEOMETRY sau GEOGRAPHY.

    -- Exemplu de sintaxă în MySQL
    CREATE SPATIAL INDEX idx_geo ON table_name (spatial_column);
    -- Exemplu de sintaxă în PostgreSQL
    CREATE INDEX idx_geo ON table_name USING GIST (spatial_column);
    
  • GIN (Index inversat generalizat) și GiST (Arbore de căutare generalizat) în PostgreSQL: Tipuri flexibile de index, potrivite pentru diverse sarcini, inclusiv căutare full-text, indexare de array-uri și JSON.

  • Clustere (Clustered): Definește ordinea fizică a rândurilor în tabel. Un tabel poate avea doar un index cluster. De obicei bazat pe cheia primară.

    -- La declararea cheii primare, se creează adesea un index cluster
    CREATE TABLE table_name (
        id INT PRIMARY KEY CLUSTERED, -- În SQL Server
        ...
    );
    
  • Non-clustered (Non-Clustered): Structură de date separată, care stochează perechi "valoare coloană (sau coloane) + pointer către rândul de date". Tabela poate avea multiple indecși non-cluster.

Comparare:

Tip de index Aplicație Operații
B-Tree General, majoritatea tipurilor de date =, <, >, <=, >=, BETWEEN, LIKE (început)
Hash Potrivire exactă (=) =
Full-Text Căutare text MATCH AGAINST (MySQL), to_tsquery (PostgreSQL)
Spațial Date geografice Funcții spațiale
Cluster Ordine fizică a rândurilor Accelerază selecția de intervale
Non-Clustered Accelerază căutarea pe coloanele indexate =, <, >, <= și altele