Индекстер: алар кантип иштейт жана качан колдонулат
Базага керектүү саптарга дароо өтүүгө мүмкүнчүлүк берип, окууну тездетебиз
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 барактын баарын барактап чыгууга туура келмек. Аягындагы алфавиттик көрсөткүч муну өзгөртөт: сиз «Ф» тамгасына өтүп, бир сапты окуйсуз, ал так барактарды көрсөтөт. Маалымат базасынын индекси — бул сиздин саптарыңыз үчүн так ушундай көрсөткүч.