Junior
Co je indexování v kontextu databází nebo kolekcí?
sobes.tech AI
Odpověď od AI
Indexování je technika optimalizace výkonu při získávání dat.
V databázích je index struktura (například B-strom), která umožňuje rychle najít řádky v tabulce, aniž by bylo nutné prohledávat celou tabulku. Vytváří se na jednom nebo více sloupcích.
V kolekcích (například ArrayList v Javě) je indexování v podstatě vestavěné. Elementy jsou uloženy v seřazené posloupnosti a přístup k libovolnému elementu podle indexu (jeho pořadového čísla) je O(1).
Hlavní cíle indexování:
- Zrychlení vykonávání dotazů: Zejména operací
SELECTs podmínkamiWHEREaJOIN. - Zajištění unikátnosti: Unikátní indexy garantují, že hodnoty ve sloupci nebo kombinaci sloupců budou jedinečné.
- Podpora třídění: Indexy mohou být použity pro rychlé třídění výsledků (
ORDER BY).
Příklady použití v SQL:
-- Vytvoření indexu na sloupci price
CREATE INDEX idx_products_price ON products (price);
-- Vytvoření složeného indexu na sloupcích customer_id a order_date
CREATE INDEX idx_orders_customer_date ON orders (customer_id, order_date);
V kolekcích, přístup přes index:
// Získání prvku podle indexu
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
String firstElement = names.get(0); // Přístup přes index 0
Nevýhody indexování:
- Zabírá další diskový prostor.
- Operace změny dat (INSERT, UPDATE, DELETE) jsou pomalejší, protože je třeba aktualizovat i index.
- Není vždy využíván optimalizátorem dotazů (například při úplném skenování tabulky).