Indeksni o'chirish
Ushbu qo'llanmada PostgreSQLda ma'lumotlar bazasidan mavjud indeksni o'chirish uchun DROP INDEX buyrug'idan qanday foydalanishni o'rganasiz.
Ortiqcha, foydalanilmayotgan yoki noto'g'ri loyihalashtirilgan indekslar ma'lumot kiritish (INSERT), o'zgartirish (UPDATE) va o'chirish (DELETE) amallarini sekinlashtiradi hamda diskda keraksiz joy egallaydi. Bunday indekslarni DROP INDEX buyrug'i orqali o'chirib tashlash mumkin.
DROP INDEX buyrug'ining asosiy sintaksisi:
DROP INDEX [CONCURRENTLY] [IF EXISTS] index_name
[CASCADE | RESTRICT];
Sintaksis tushuntirishi:
index_name — o'chirilishi kerak bo'lgan indeks nomi.CONCURRENTLY — jonli (production) tizimlar uchun juda muhim parametr. Oddiy DROP INDEX jadvalni qulflaydi (lock) va boshqa so'rovlarni to'xtatib qo'yishi mumkin. CONCURRENTLY opsiyasi jadvalni qulflamasdan, boshqa amallar (SELECT, INSERT, UPDATE) bajarilishiga xalaqit bermagan holda indeksni xavfsiz o'chiradi.IF EXISTS — agar indeks mavjud bo'lmasa, xatolik chiqarmasdan ogohlantirish beradi.CASCADE — ushbu indeksga bog'liq ob'ektlarni ham birga o'chiradi.RESTRICT — agar indeksga bog'liq boshqa ob'ektlar bo'lsa, o'chirishni rad etadi (sukut bo'yicha).Avvalo, sinov uchun jadval va indeks yaratamiz:
DROP TABLE IF EXISTS products CASCADE;
CREATE TABLE products (
product_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
product_name VARCHAR(100) NOT NULL,
safety_stock INT NOT NULL DEFAULT 0
);
-- Indeks yaratamiz
CREATE INDEX products_safety_stock_idx
ON products(safety_stock);
Indeks mavjudligini tekshiramiz:
SELECT indexname FROM pg_indexes WHERE tablename = 'products';
Natija:
indexname
--------------------------
products_pkey
products_safety_stock_idx
Endi yaratilgan indeksni o'chiramiz:
DROP INDEX products_safety_stock_idx;
Agar indeks mavjudligiga ishonchingiz komil bo'lmasa, IF EXISTS qo'shiladi:
DROP INDEX IF EXISTS products_safety_stock_idx;
Katta va faol foydalanilayotgan jadvallarda bloklanishlarning oldini olish uchun:
DROP INDEX CONCURRENTLY IF EXISTS products_safety_stock_idx;
[!NOTE]
CONCURRENTLYopsiyasi tranzaksiya bloklari (BEGIN ... COMMIT) ichida ishlatilmaydi.
DROP INDEX buyrug'i ma'lumotlar bazasidan keraksiz indekslarni o'chirib, yozish amallari tezligini va disk hajmini tejashga yordam beradi.IF EXISTS xatoliklarni oldini oladi.CONCURRENTLY opsiyasi yuklama ostidagi tizimlarda jadvalni bloklamasdan indeksni o'chirish imkonini beradi.