Sobes.tech
Middle

Ինչպե՞ս է ինդեքսը օպտիմալացնում հարցման կատարմանը։

sobes.tech AI

Պատասխան AI-ից

Ինդեքսը տվյալների կառուցվածք է (հաճախ B- ծառ), որը պահում է աղյուսակի փոքր մաս և հղումներ համապատասխան տողերին հիմնական աղյուսակում:

Օպտիմալացման գործընթացը՝

  1. Արագ որոնում: Փոխարենը ամբողջ աղյուսակի (full table scan) սկանավորելու, տվյալների բազայի կառավարման համակարգը (ՏԲՀ) որոնում է ինդեքսը: Ինդեքսը դասավորված է և օպտիմալացված է արագ որոնումների համար որոշակի սյունակների վրա:
  2. Տվյալների քանակի նվազեցում: Ինդեքսը պարունակում է միայն ինդեքսավորված սյունակները և ցուցիչները, ինչը զգալիորեն նվազեցնում է սկանավորման ժամանակը՝ համեմատած ամբողջ տողի կամ էջի ընթերցման հետ:
  3. Անցորդություն չկա: Ինդեքսը արդեն դասավորված է ըստ ինդեքսավորված սյունակների, ինչը խուսափում է թանկարժեք դասավորման օպերացիաներից, եթե հարցումը պահանջում է դասավորված արդյունքներ:
  4. 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);