Junior
Veritabanları veya koleksiyonlar bağlamında indeksleme nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
İndeksleme, veri çıkarma sırasında performans optimizasyonu tekniğidir.
Veritabanlarında, indeks bir yapı (örneğin, B-ağaç) olup, bir tablodaki satırları hızlıca bulmayı sağlar, tüm tabloyu taramadan. Bir veya birkaç sütun üzerinde oluşturulur.
Koleksiyonlarda (örneğin, Java'daki ArrayList), indeksleme temelde gömülüdür. Öğeler sıralı bir dizide saklanır ve herhangi bir öğeye indeks (sıra numarası) ile erişim O(1) süresindedir.
İndekslemenin temel amaçları:
- Sorgu yürütme hızını artırmak: Özellikle
WHEREveJOINkoşulları içerenSELECTişlemleri için. - Benzersizlik sağlamak: Benzersiz indeksler, indekslenen sütun veya sütun kombinasyonundaki değerlerin benzersiz olmasını garanti eder.
- Sıralamayı desteklemek: İndeksler, sonuçların hızlı sıralanması için kullanılabilir (
ORDER BY).
SQL'de kullanım örnekleri:
-- Fiyat sütunu üzerinde indeks oluşturma
CREATE INDEX idx_products_price ON products (price);
-- Müşteri kimliği ve sipariş tarihi sütunları üzerinde bileşik indeks oluşturma
CREATE INDEX idx_orders_customer_date ON orders (customer_id, order_date);
Koleksiyonlarda, indeks ile erişim:
// Öğeyi indeks ile alma
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
String firstElement = names.get(0); // İndeks 0 ile erişim
İndekslemenin dezavantajları:
- Ek disk alanı kullanır.
- Veri değiştirme işlemleri (INSERT, UPDATE, DELETE) daha yavaş olur, çünkü indeksin de güncellenmesi gerekir.
- Sorgu optimizasyoncusu tarafından her zaman kullanılmaz (örneğin, tam tablo taraması sırasında).