032. EXPLAIN va ANALYZE
Bu mavzuda so'rov rejasini o'qish bo'yicha 20 ta masala bor. Har bir masala oldida qavs ichida sxema nomi va qiyinlik darajasi ko'rsatilgan. Sxemalar Sxemalar va tayyorlov sahifasida berilgan.
Masalani o'zingiz yechib, natijani Kutilgan natija bilan solishtiring. O'zgartiruvchi masalalarda (INSERT, UPDATE, DELETE, DDL) natija shartda aytilgan tekshiruv so'rovidan olingan. Natija 10 qatordan ko'p bo'lsa, birinchi 10 qator ko'rsatilgan.
1. (dokon, oson) EXPLAIN matnini funksiyada olib, mahsulot to'liq skan 'Seq Scan' bo'lishini tekshiring (indekssiz).
2. (dokon, oson) EXPLAIN (FORMAT JSON) natijasida 'Plan' kaliti bor (json massivining birinchi elementi).
3. (dokon, oson) Plan tugun turi: SELECT * FROM mahsulot uchun 'Node Type' qiymati.
4. (dokon, o'rta) JOIN uchun plan: mijoz va buyurtma JOIN planida 'Join' so'zi bor-yo'qligi (Hash Join / Nested Loop / Merge Join).
5. (dokon, o'rta) EXPLAIN ANALYZE natijasida 'Execution Time' bormi (EXPLAIN ANALYZE ni funksiyada ishlating).
6. (dokon, o'rta) Real qatorlar soni: EXPLAIN (ANALYZE, FORMAT JSON) dan 'Actual Rows' (asosiy tugun) — mahsulot jadvali qatorlar soniga tengmi.
7. (dokon, o'rta) ANALYZE jadval statistikasini yangilaydi: ANALYZE mahsulot dan keyin pg_stats da kategoriya_id uchun yozuv bormi.
8. (dokon, qiyin) Saralash tugun: ORDER BY narx uchun plan 'Sort' ni o'z ichiga oladimi.
9. (dokon, qiyin) Agregat plan: GROUP BY uchun 'Aggregate' (HashAggregate yoki GroupAggregate) bormi.
10. (dokon, qiyin) Qiyosiy: indeks bilan va indekssiz plan: mahsulot(id) PK dagi id=5 qidiruvi indeks ishlatadimi (seqscan o'chiq).
11. (maktab, oson) baho jadvali uchun Seq Scan plan (indekssiz ustun).
12. (maktab, o'rta) EXISTS subquery plani: 'Semi Join' hosil bo'ladimi (oquvchi va baho).
13. (maktab, qiyin) Window plan: ROW_NUMBER() OVER uchun 'WindowAgg' tugun bormi.
14. (bank, oson) tranzaksiya jadvali uchun EXPLAIN (COSTS OFF) matnida 'Seq Scan' bormi.
15. (bank, o'rta) LIMIT plani: 'Limit' tugun bormi (ORDER BY summa LIMIT 3).
16. (bank, o'rta) Indeks yaratgach planning o'zgarishi: tranzaksiya(summa) indeksi + seqscan off — ORDER BY summa LIMIT 3 plan indeksni ishlatadimi.
17. (bank, qiyin) EXPLAIN (ANALYZE, BUFFERS) natijasida 'Buffers' so'zi bormi.
18. (kutubxona, oson) Plan tugun turi: SELECT * FROM kitob uchun.
19. (kutubxona, o'rta) Hash Join/Nested Loop: kitob va muallif JOIN planida muallif jadvali ham ko'rinadimi.
20. (kutubxona, qiyin) pg_stat_statements emas: oddiy statistik: pg_stat_user_tables da kitob jadvali n_live_tup bor-yo'qligi (qator mavjud).