031. Indekslar
Bu mavzuda B-tree, GIN, BRIN, partial va covering indekslar 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) mijoz.shahar ustuniga indeks yarating; indeks bor-yo'qligini pg_indexes dan tekshiring.
2. (dokon, oson) UNIQUE indeks: mijoz.email ga UNIQUE indeks yarating va uni indisunique orqali tekshiring.
3. (dokon, oson) Indeksni DROP INDEX bilan o'chiring (avval yarating); tekshiruv: indeks qolmaganini.
4. (dokon, o'rta) Kompozit indeks: buyurtma(mijoz_id, sana). Indeks ustunlari sonini (indnatts) tekshiring.
5. (dokon, o'rta) Partial indeks: faqat 'bekor' bo'lmagan buyurtmalar uchun (sana bo'yicha). Indeks ta'rifida WHERE bormi.
6. (dokon, o'rta) Ifoda (expression) indeksi: LOWER(ism) bo'yicha. Indeks ta'rifida lower bormi.
7. (dokon, o'rta) INCLUDE (covering) indeks: mahsulot(kategoriya_id) INCLUDE (narx). indnkeyatts va indnatts.
8. (dokon, o'rta) Indeks turi: HASH indeks yarating (mijoz.shahar) va amname.
9. (dokon, qiyin) DESC indeks va NULLS: mahsulot(narx DESC NULLS LAST) indeksini yarating; ta'rifida DESC bormi.
10. (dokon, qiyin) Indeks hajmi: indeks yaratib pg_relation_size 0 dan kattaligini tekshiring.
11. (maktab, oson) oquvchi.sinf_id ga indeks. pg_indexes da sonini ko'rsating (PK bilan 2).
12. (maktab, o'rta) baho(oquvchi_id, fan_id) kompozit indeksi; ustunlar tartibi: ta'rifini ko'rsating (ustun ro'yxati).
13. (maktab, qiyin) Partial UNIQUE indeks: telefon bo'yicha faqat NULL emaslar uchun. Indeksning unique va partialligini tekshiring.
14. (bank, oson) hisob.mijoz_id ga indeks.
15. (bank, o'rta) BRIN indeks: tranzaksiya.sana bo'yicha; amname.
16. (bank, qiyin) Indeks ishlatilishi: seqscan o'chirib, hisob.mijoz_id=1 so'rovida indeks ishlatilishini plan matni bilan tekshiring (Index/Bitmap so'zi).
17. (kutubxona, oson) kitob.muallif_id ga indeks.
18. (kutubxona, o'rta) Partial indeks: qaytarilmagan ijaralar (qaytarilgan IS NULL) bo'yicha azo_id. Indeks WHERE bormi.
19. (kutubxona, qiyin) Covering indeks bilan index-only scan: ijara(azo_id) INCLUDE (olingan), seqscan o'chirilgan, 'Index Only Scan' plan.
20. (kutubxona, qiyin) Indeks ishlatilmasligi: funksiya ichidagi ustun LOWER(nom) uchun oddiy nom indeksi ishlamaydi, ifoda indeksi ishlaydi: ifoda indeksi yaratib planni tekshiring (seqscan off).