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
GEOMETRYsauGEOGRAPHY.-- 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 |