Middle
როგორ ოპტიმიზირებს ინდექსი შეკითხვის შესრულებას?
sobes.tech AI
პასუხი AI-სგან
ინდექსი — ეს მონაცემთა სტრუქტურა (საშუალოდ B-ხე), რომელიც ინახავს მცირე ნაწილს ცხრილის მონაცემებისა და ბმულებს შესაბამისი სტრიქონებისკენ ძირითადი ცხრილში.
ოპტიმიზაციის პროცესი:
- სწრაფი ძიება: სრული ცხრილის სკანირების (full table scan) ნაცვლად, მონაცემთა ბაზის მართვის სისტემა (DBMS) უყურებს ინდექსს. ინდექსი არის სორტირებული და ოპტიმიზირებული სწრაფი ძიებისთვის გარკვეულ სვეტებზე.
- მოკლე მონაცემების მოცულობა: ინდექსი შეიცავს მხოლოდ ინდექსირებულ სვეტებს და მითითებებს, რაც მნიშვნელოვნად ამცირებს მონაცემების მოცულობას, რომელიც უნდა წაიკითხოს დისკიდან, შედარებით მთელი სტრიქონის ან მთელი გვერდის წაკითხვასთან.
- სორტირების გამორიცხვა: ინდექსი უკვე სორტირებულია ინდექსირებულ სვეტებზე. ეს გამორიცხავს ძვირადღირებული სორტირების ოპერაციის განხორციელებას, თუ მოთხოვნილია სორტირებული შედეგი.
- 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);