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

Аткаруу пландарын окуу жана суроо-талаптарды оптималдаштыруу

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

Аткаруу пландарын окуу жана суроо-талаптарды оптималдаштыруу

MySQL сиздин суроону чындыгында кантип аткарарын көрүп, аны тез иштеши үчүн кайра жазыңыз

Негизги идея: SELECT - бул рецепт эмес, талап. Сиз кайсы саптарды каалаганыңызды сүрөттөйсүз; суроо оптималдаштыргычы аларды кантип алууну чечет - кайсы индексти окуу, скандоо же индекс боюнча издөө жана таблицаларды кайсы тартипте бириктирүү. EXPLAIN бул планды аткаруудан мурун көрсөтөт; EXPLAIN ANALYZE суроону аткарып, чындыгында эмне болгонун билдирет. Аларды окууну үйрөнсөңүз, көпчүлүк жай суроолорду оңдоо айкын болуп калат.
Аягында сиз төмөнкүлөрдү жасай аласыз:
  • EXPLAIN негизги мамычаларын окуу: type, key, rows, filtered, Extra,
  • толук таблица скандоону индекс боюнча диапазон скандоодон же бир саптык издөөдөн айырмалоо,
  • негизги бириктирүү стратегияларын таануу - ички циклдер жана хеш-бириктирүү,
  • EXPLAIN ANALYZE менен болжолдуу жана чыныгы сап санын салыштыруу,
  • жай суроолордун классикалык үлгүлөрүн таап, оңдоо.

0. Мисал схема

Төмөндөгү бардык суроолор бир кичинекей дүкөн маалымат базасында иштейт. Аны бир жолу түзүп, теманын аягына чейин эсте сактаңыз.

CREATE TABLE customers (
  customer_id INT PRIMARY KEY,
  name        VARCHAR(80),
  city        VARCHAR(60),
  created_at  DATE
);

CREATE TABLE orders (
  order_id    INT PRIMARY KEY,
  customer_id INT,
  order_date  DATE,
  status      VARCHAR(20),
  total       DECIMAL(10,2),
  FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

INSERT INTO customers VALUES
  (1,'Aida','Bishkek','2023-02-10'),
  (2,'Bekturs','Osh','2023-05-01'),
  (3,'Cholpon','Bishkek','2024-01-20');

INSERT INTO orders VALUES
  (10,1,'2024-03-01','paid',   120.00),
  (11,1,'2024-03-04','paid',    55.50),
  (12,2,'2024-03-04','pending', 80.00),
  (13,3,'2024-04-11','paid',   210.00);

Продакшенде эки таблица тең алда канча чоң деп эсептеңиз (миллиондогон заказдар). Кичине мисал натыйжаларды окуй тургандай кылат; чоң масштабда пландар маанилүү.

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

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

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

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