Tekshirdi: Ismoilova Maftuna
17-variant.
12-topshiriq
Mavzu: SQL tilida INDEX yaratish
Ishdanmaqsad: MySQL maxsus ustun qiymatlariga ega qatorlarni tezda topish uchun indekslardan foydalanishni o‘rganish.
Masalani qo‘yilishi: Bu amaliy mashg‘ulotida MySQL indekslari, shu jumladan indekslarni yaratish, indekslarni o‘chirish, jadvalning barcha indekslarini sanab o‘tish va MySQLda boshqa muhim ko‘rsatkichlar bilan ishlanadi.
Uslubiyko‘rsatmalar: MySQL maxsus ustun qiymatlariga ega qatorlarni tezda topish uchun indekslardan foydalanadi. Indekssiz MySQL tegishli satrlarni topish uchun butun jadvalni skanerdan o‘tkazishi kerak. Jadval qanchalik katta bo‘lsa, u sekinroq qidiradi.
Indekslarni yaratish(creating indexes) - sizni indeks tushunchasi bilan tanishtiradi va jadvalning bir yoki bir nechta ustunlari uchun indeks qanday yaratilishini ko‘rsatib beradi.
Indekslarni o‘chirish(removing indexes)- jadvalning mavjud indeksini qanday olib tashlashni ko‘rsatib beradi.
Jadval indekslarini ro‘yxatlash(listing table indexes) - barcha indekslarni yoki jadvalning o‘ziga xos indekslarini ro‘yxat qilish to‘g‘risida ma'lumot beradi.
Noyob indekslar(unique indexes) - ustunlarda saqlanadigan aniq qiymatlarni ta'minlash uchun noyob indekslardan foydalanadi.
Prefiks indekslari(frefix indexses) - belgilar qatori ustuniga indeks yaratish uchun prefiks indeksidan qanday foydalanishni ko‘rsatib beradi.
Ko‘rinmas indekslar (invisible indexes) - indeks ko‘rinishini qamrab oladi va indeksni ko‘rinadigan yoki ko‘rinmas qilib ko‘rsatishni ko‘rsatadi.
Kichik indekslar (descending indexes) - so‘rov samaradorligini oshirish uchun pasayadigan indekslardan qanday foydalanishni ko‘rsatib beradi.
Kompozit indekslar (composite indexes) - kompozit indekslarning qo‘llanilishini tasvirlaydi va sizning so‘rovlaringizni tezlashtirish uchun ularni qachon ishlatishingizni ko‘rsatadi.
Klasterli indekslar (clustered indexes) - InnoDB jadvallaridagi klasterlangan indekslarni tushuntiradi.
Indeksning kardinalligi (index cardinatily) - indeksning kardiologiyasini tushuntiradi va shou indekslari buyrug‘i yordamida uni qanday ko‘rishni ko‘rsatib beradi.
FOYDALANISH INDEX (use index hint) - jadvalda satrlarni topish uchun so‘rovlar optimallashtiruvchisiga belgilangan indekslarning yagona ro‘yxatidan foydalanishni ko‘rsatishda USE INDEX maslahatini qanday ishlatishni ko‘rsatib beradi.
FORCE INDEX hint - jadvaldan ma'lumotlarni tanlash uchun so‘rov optimizatorini belgilangan indekslardan foydalanishga majbur qilish uchun FORCE INDEX ko‘rsatmalaridan qanday foydalanishni ko‘rsatib beradi.
Quyida bazi asosiy so‘rovlar sintaksisi bilan tanishamiz:
Index (ko‘rsatkich) yaratishning MySQLdagi umumiy sintaksisi:
CREATE INDEX indeks_nomi ON jadval_nomi (ustun1, ustun2, ...);
Masalan:
CREATE INDEX familiya ON shaxslar (familiya);
CREATE INDEX FISH ON shaxslar (familiya, ism, sharif);
Index (ko‘rsatkich)ni ko‘rsatishning MySQLdagi umumiy sintaksisi:
Show indexes from jadval_nomi;
Show keys from jadval_nomi in malumotlar_bazasi_nomi;
Index (ko‘rsatkich) o‘chirishning MySQLdagi umumiy sintaksisi:
Oracle bazada:
DROP INDEX jadval_nomi.indeks_nomi;
MySQL 5.6.16 da:
ALTER TABLE jadval_nomi DROP INDEX indeks_nomi;
Kabi komandalar orqali amalga oshiriladi.
bajarish tartibi
1. Bazamizdagi barcha jadvallarni ko‘ramiz:
show tables FROM mini_market;
Hodimlarma’lumotlar bazasidagi barcha jadvallarning ro‘yxati
Hodimlar nomli jadvalni ko‘ramiz va “Yil_hodimi” nomli indeks yaratamiz:
SELECT * FROM `hodimlar`;
Create index yil_hodimlari on hodimlar(hodim_id, FISH);
Yaratgan indeksimizni ko‘ramiz:
So‘rov: showindexesfrom hodimlar; show indexes from hodimlar;
Sotuvchilar nomli jadvalni ko‘ramiz va “faol_sotuvchi” nomli indeks yaratamiz:
Create index faol_sotuvchilar on sotuvchilar(s_id, FISH);
Yaratgan indeksimizni ko’ramiz:
So‘rov: showindexesfrom sotuvchilar; show indexes from sotuvchilar;
Sotuvchilar nomli jadvalidan “faol_sotuvchi” indexini o’chiramiz
Shunday qilibIndekslar ma'lumotlar bazasidan ma'lumotlarni tezroq olish uchun ishlatiladi aks holda. Foydalanuvchilar indekslarni ko'ra olmaydi, ular faqat qidiruv/so'rovlarni tezlashtirish uchun ishlatiladi.