Sobes.tech
Junior

ინექსისია მონაცემთა ბაზების ან კოლექციების კონტექსტში რა არის?

sobes.tech AI

პასუხი AI-სგან

ინდექსირება არის ტექნიკა მონაცემების გამოთხოვის შესრულების ოპტიმიზაციისთვის.

მონაცემთა ბაზებში, ინდექსი არის სტრუქტურა (მაგალითად, B-ხე), რომელიც საშუალებას აძლევს სწრაფად იპოვოთ სვეტები ცხრილში, მთელი ცხრილის გადახედვის გარეშე. იგი შექმნილია ერთ ან რამდენიმე სვეტზე.

კოლექციებში (მაგალითად, Java-ს ArrayList), ინდექსირება ძირითადად შიგნიდან არის. ელემენტები ინახება სორტირებულ სერიაში, და ნებისმიერ ელემენტზე წვდომა ინდექსით (მისი რიგითი ნომრით) ხდება O(1) დროში.

ინდექსირების ძირითადი მიზნები:

  • საკითხების შესრულების სიჩქარის გაზრდა: განსაკუთრებით SELECT ოპერაციებისთვის WHERE და JOIN პირობებით.
  • უნიკალურობის უზრუნველყოფა: უნიკალური ინდექსები გარანტიას იძლევა, რომ ინდექსირებულ სვეტზე ან სვეტების კომბინაციაზე მნიშვნელობები იქნება უნიკალური.
  • სორტირების მხარდაჭერა: ინდექსები შეიძლება გამოყენებულ იქნას შედეგების სწრაფი სორტირებისათვის (ORDER BY).

SQL-ში გამოყენების მაგალითები:

-- ინდექსის შექმნა ფასის სვეტზე
CREATE INDEX idx_products_price ON products (price);

-- კომპოზიციური ინდექსის შექმნა მომხმარებლის ID და შეკვეთის თარიღის სვეტებზე
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) უფრო ნელი ხდება, რადგან უნდა განახლდეს ასევე ინდექსიც.
  • ყოველთვის არ გამოიყენება კითხვების ოპტიმიზატორით (მაგალითად, სრული სკანირების დროს).