Junior
Индексикунонӣ дар контексти базаҳои додаҳо ё коллексияҳо чист?
sobes.tech AI
Ҷавоб аз AI
Индексиравӣ як техникаи оптимизатсияи иҷроиш дар вақти гирифтани маълумот мебошад.
Дар базаҳои додаҳо, индекс структура (масалан, дарахти B) мебошад, ки имкон медиҳад, ки ба зудӣ сатрҳоро дар як ҷадвал пайдо кардан, бе гузаштан аз тамоми ҷадвал. Он дар як ё чанд сутун сохта мешавад.
Дар коллексияҳо (масалан, ArrayList дар Java), индекссозӣ дар асоси он аст. Элементҳо дар як пайдарпайии мураттаб нигоҳ дошта мешаванд, ва дастрасӣ ба ҳар як элемент тавассути индекс (рақами он) дар вақти 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) бо суръат камтар мешаванд, зеро бояд индекс ҳам навсозӣ шавад.
- Ҳамеша аз ҷониби оптимизатори дархост истифода намешавад (масалан, дар сканкунии пурраи ҷадвал).