Koje vrste indeksa postoje u SQL?
sobes.tech АИ
Одговор од АИ
-
B-stablo (B-tree): Najčešće korišćen tip. Pogodan za većinu operacija čitanja, uključujući
WHERE,LIKE,ORDER BY.CREATE INDEX idx_column ON table_name (column_name); -
Hash (Hash): Optimizovan za tačna podudaranja (
=). Ne podržava opsežne upite ili sortiranje.-- Primer sintakse, može se razlikovati u zavisnosti od DBMS-a CREATE INDEX idx_column ON table_name USING HASH (column_name); -
Full-Text (Pun tekst): Koristi se za pretraživanje teksta u velikim tekstualnim poljima (
VARCHAR,TEXT).-- Primer sintakse u MySQL-u CREATE FULLTEXT INDEX idx_text ON table_name (text_column); -- Primer sintakse u PostgreSQL-u CREATE INDEX idx_text ON table_name USING GIN (to_tsvector('serbian', text_column)); -
Prostorne (Spatial): Za indeksiranje geografskih podataka (tačke, linije, poligoni). Koristi se sa tipovima podataka kao što su
GEOMETRYiliGEOGRAPHY.-- Primer sintakse u MySQL-u CREATE SPATIAL INDEX idx_geo ON table_name (spatial_column); -- Primer sintakse u PostgreSQL-u CREATE INDEX idx_geo ON table_name USING GIST (spatial_column); -
GIN (Generalized Inverted Index) i GiST (Generalized Search Tree) u PostgreSQL-u: Fleksibilni tipovi indeksa, pogodni za različite zadatke, uključujući pun tekst, indeksiranje nizova i JSON.
-
Klasterski (Clustered): Određuje fizički red redova u tabeli. Jedna tabela može imati samo jedan klasterski indeks. Često je zasnovan na primarnom ključu.
-- Pri deklaraciji primarnog ključa, često se kreira klasterski indeks CREATE TABLE table_name ( id INT PRIMARY KEY CLUSTERED, -- U SQL Server ... ); -
Ne klasterski (Non-Clustered): Odvojena struktura podataka, koja čuva parove "vrednost kolone (ili kolona) + pokazivač na red podataka". Tabela može imati više ne klasterskih indeksa.
Uporedba:
| Tip indeksa | Primena | Operacije |
|---|---|---|
| B-stablo | Opšte, za većinu tipova podataka | =, <, >, <=, >=, BETWEEN, LIKE (početak) |
| Hash | Tačno podudaranje (=) |
= |
| Full-Text | Pretraživanje teksta | MATCH AGAINST (MySQL), to_tsquery (PostgreSQL) |
| Prostorne | Geografski podaci | Prostorne funkcije |
| Klasterski | Fizičko poređivanje redova | Ubrzava izbore opsega |
| Ne klasterski | Ubrzava pretragu po indeksiranim kolonama | =, <, >, <= i sl. |