Sobes.tech
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) постају спорије, јер је потребно ажурирати и индекс.
  • Не увек се користи од стране оптимизатора упита (на пример, при потпуном скенирању табеле).