Middle
Ինչպե՞ս է ինդեքսը օպտիմալացնում հարցման կատարմանը։
sobes.tech AI
Պատասխան AI-ից
Ինդեքսը տվյալների կառուցվածք է (հաճախ B- ծառ), որը պահում է աղյուսակի փոքր մաս և հղումներ համապատասխան տողերին հիմնական աղյուսակում:
Օպտիմալացման գործընթացը՝
- Արագ որոնում: Փոխարենը ամբողջ աղյուսակի (full table scan) սկանավորելու, տվյալների բազայի կառավարման համակարգը (ՏԲՀ) որոնում է ինդեքսը: Ինդեքսը դասավորված է և օպտիմալացված է արագ որոնումների համար որոշակի սյունակների վրա:
- Տվյալների քանակի նվազեցում: Ինդեքսը պարունակում է միայն ինդեքսավորված սյունակները և ցուցիչները, ինչը զգալիորեն նվազեցնում է սկանավորման ժամանակը՝ համեմատած ամբողջ տողի կամ էջի ընթերցման հետ:
- Անցորդություն չկա: Ինդեքսը արդեն դասավորված է ըստ ինդեքսավորված սյունակների, ինչը խուսափում է թանկարժեք դասավորման օպերացիաներից, եթե հարցումը պահանջում է դասավորված արդյունքներ:
- JOIN- օպերացիաների օպտիմալացում: Երբ միանում են աղյուսակները (JOIN) ինդեքսավորված սյունակների վրա, ՏԲՀ-ն կարող է օգտագործել ինդեքսը՝ արագ գտնելու համապատասխան տողերը մյուս աղյուսակում՝ փոխարենը ամբողջ աղյուսակի վրա ներսի ցիկլեր գործադրելու:
Օրինակ՝
Եթե LastName սյունակի վրա չկա ինդեքս, ապա SELECT * FROM Users WHERE LastName = 'Ivanov' հարցում, ՏԲՀ-ն պետք է կարդա յուրաքանչյուր տող Users աղյուսակում և ստուգի LastName արժեքը:
Ինդեքսով LastName-ում, ՏԲՀ-ն արագ գտնում է այն գրառումները, որտեղ LastName-ը հավասար է 'Ivanov', անցնելով դասավորված ինդեքսը և օգտագործելով ինդեքսից ցուցիչները՝ ստանալու համար ամբողջական տողային տվյալները:
-- Հարցում, որը օգտվում է `LastName` ինդեքսից
SELECT UserId, FirstName
FROM Users
WHERE LastName = 'Ivanov';
-- Ինդեքսի ստեղծման օրինակ՝ վերոնշյալ հարցման օպտիմալացման համար
CREATE INDEX IX_Users_LastName ON Users (LastName);