Мазмунга өтүү

Индекстер: алар кантип иштейт жана качан колдонулат

Сабактын башталышы

Индекстер: алар кантип иштейт жана качан колдонулат

Базага керектүү саптарга дароо өтүүгө мүмкүнчүлүк берип, окууну тездетебиз

Негизги идея: индекс — бул база таблицанын жанында сактай турган өзүнчө иреттелген маалымат түзүмү; ал ар бир сапты карабай туруп саптарды табууга жардам берет. Бул классикалык алмашуу: дисктеги орун жана жазуу убактысы окуу ылдамдыгынын ордуна. Индекстелген тилке боюнча чыпкалаган, бириктирген же иреттеген суроо-талаптар кыйла тездейт, ал эми ар бир INSERT, UPDATE жана DELETE бир аз көбүрөөк иш жасайт, жана индекс өзү орун ээлейт. Бул алмашуу качан пайдалуу экенин билүү — бул бүт чеберчилик.
Бул теманын аягында сиз төмөнкүлөрдү жасай аласыз:
  • индекссиз суроо-талап эмне үчүн таблицаны толук сканерлөө жасаарын түшүндүрө аласыз,
  • B-tree индекси издөөнү бир нече окууга чейин кантип кыскартарын сүрөттөй аласыз,
  • индекс эмнени тездетээрин (теңдик, диапазондор, ORDER BY, бириктирүүлөр) жана эмнеге турарын атай аласыз,
  • селективдүүлүктү жана курама индекстер үчүн эң сол префикс эрежесин колдонуп жакшы тилкелерди тандай аласыз,
  • индекс чын эле колдонулуп жатабы деп EXPLAIN аркылуу текшере аласыз,
  • индекс кошуу кереги жок учурларды тааный аласыз.

1. Көйгөй: таблицаны толук сканерлөө

Бул беттеги бардык мисалдар онлайн дүкөндүн бир кичинекей таблицасын колдонот. Аны бир жолу түзүп, бир нече сап жүктөңүз:

CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    email       VARCHAR(120),
    city        VARCHAR(50),
    created_at  DATE
);

INSERT INTO customers (customer_id, email, city, created_at) VALUES
    (1, 'ana@shop.io',   'Bishkek', '2025-01-04'),
    (2, 'omar@shop.io',  'Osh',     '2025-01-09'),
    (3, 'lena@shop.io',  'Bishkek', '2025-02-14'),
    (4, 'raj@shop.io',   'Naryn',   '2025-02-20'),
    (5, 'mira@shop.io',  'Osh',     '2025-03-02');

Эми бул таблицада миллион сап бар деп элестетиңиз жана өтө кадимки издөөнү аткарасыз:

SELECT * FROM customers WHERE email = 'raj@shop.io';

email боюнча индекс жок болсо, база ал сап кайда экенин билбейт. Ал ар бир сапты окуп, алардын email-ин бирден салыштырышы керек. Бул таблицаны толук сканерлөө: миллион сапта бир жыйынтык кайтаруу үчүн болжол менен миллион салыштыруу жасалат.

Салыштыруу. Аягында тематикалык көрсөткүчү жок 900 барактуу окуу китебин элестетиңиз. «Фотосинтез» айтылган бардык барактарды табуу үчүн 900 барактын баарын барактап чыгууга туура келмек. Аягындагы алфавиттик көрсөткүч муну өзгөртөт: сиз «Ф» тамгасына өтүп, бир сапты окуйсуз, ал так барактарды көрсөтөт. Маалымат базасынын индекси — бул сиздин саптарыңыз үчүн так ушундай көрсөткүч.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө