Sobes.tech
Middle

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

sobes.tech AI

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

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

ოპტიმიზაციის პროცესი:

  1. სწრაფი ძიება: სრული ცხრილის სკანირების (full table scan) ნაცვლად, მონაცემთა ბაზის მართვის სისტემა (DBMS) უყურებს ინდექსს. ინდექსი არის სორტირებული და ოპტიმიზირებული სწრაფი ძიებისთვის გარკვეულ სვეტებზე.
  2. მოკლე მონაცემების მოცულობა: ინდექსი შეიცავს მხოლოდ ინდექსირებულ სვეტებს და მითითებებს, რაც მნიშვნელოვნად ამცირებს მონაცემების მოცულობას, რომელიც უნდა წაიკითხოს დისკიდან, შედარებით მთელი სტრიქონის ან მთელი გვერდის წაკითხვასთან.
  3. სორტირების გამორიცხვა: ინდექსი უკვე სორტირებულია ინდექსირებულ სვეტებზე. ეს გამორიცხავს ძვირადღირებული სორტირების ოპერაციის განხორციელებას, თუ მოთხოვნილია სორტირებული შედეგი.
  4. JOIN ოპერაციების ოპტიმიზაცია: ცხრილების შეუერთებისას (JOIN) სორტირებულ სვეტებზე, DBMS-ი შეუძლია გამოიყენოს ინდექსი შესაბამისი სტრიქონების სწრაფად მოძიებისთვის სხვა ცხრილში, ნაცვლად მთელი ცხრილის შიგნით ნესტიან ლუპებზე.

მაგალითი:

შეიძლება, რომ LastName სვეტზე არ იყოს ინდექსი, და მაშინ SELECT * FROM Users WHERE LastName = 'Иванов' მოთხოვნისთვის, DBMS-მა უნდა წაიკითხოს ყველა სტრიქონი Users-ში და შეამოწმოს LastName მნიშვნელობა.

ინდექსით LastName-ზე, DBMS-ი სწრაფად იპოვის ჩანაწერებს, სადაც LastName თანხვედრია 'Иванов'-ს, სორტირებული ინდექსის გადახედვით, და შემდეგ გამოიყენებს ინდექსის მითითებებს სრული მონაცემების მისაღებად ძირითადი ცხრილიდან.

-- მაგალითი მოთხოვნის, რომელიც სარგებლობს `LastName` ინდექსით
SELECT UserId, FirstName
FROM Users
WHERE LastName = 'Иванов';
-- მაგალითი ინდექსის შექმნისთვის ზემოთ მოცემული მოთხოვნის ოპტიმიზაციისთვის
CREATE INDEX IX_Users_LastName ON Users (LastName);