Junior
Šta je indeksiranje u kontekstu baza podataka ili kolekcija?
sobes.tech АИ
Одговор од АИ
Индексирање је техника оптимизације перформанси приликом извлачења података.
У базама података, индекс је структура (на пример, Б-јам) која омогућава брзо проналажење редова у таблици, без прегледа целе табеле. Он се креира на једној или више колона.
У колекцијама (на пример, ArrayList у Јави), индексирање је у основи уграђено. Елементи се чувају у уређеној секвенци, а приступ било ком елементу по индексу (његовом редном броју) се обавља у O(1) времену.
Главни циљеви индексирања:
- Убрзавање извршавања упита: Посебно за операције
SELECTса условимаWHEREиJOIN. - Обезбеђивање јединствености: Јединствени индекси гарантују да вредности у индексираној колони или комбинацији колона буду јединствене.
- Подршка за сортирање: Индекси могу бити коришћени за брзо сортирање резултата (
ORDER BY).
Примери коришћења у SQL:
-- Креирање индекса на колони price
CREATE INDEX idx_products_price ON products (price);
-- Креирање сложеног индекса на колонама customer_id и order_date
CREATE INDEX idx_orders_customer_date ON orders (customer_id, order_date);
У колекцијама, приступ по индексу:
// Добијање елемента по индексу
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
String firstElement = names.get(0); // Приступ по индексу 0
Недостаци индексирања:
- Заузима додатни простор на диску.
- Операције измене података (INSERT, UPDATE, DELETE) постају спорије, јер је потребно ажурирати и индекс.
- Не увек се користи од стране оптимизатора упита (на пример, при потпуном скенирању табеле).