CodeGym /Kurslar /SQL SELF /İndekslərlə tanışlıq

İndekslərlə tanışlıq

SQL SELF
Səviyyə , Dərs
Mövcuddur

Artıq əvvəllər indekslərlə rastlaşmısan. Gəlin bu gün onları dərindən öyrənək ki, necə işlədiklərini tam başa düşəsən. İndekslər əla şeydir, sorğularını yüzlərlə, hətta minlərlə dəfə sürətləndirə bilər. Sənə xoşuna gələcək. Amma indeks nədir axı?

Təsəvvür elə ki, böyük bir kitabxanada lazım olan kitabı axtarırsan. Heç bir qayda olmadan axtarsan, bu iş sonsuz çəkərdi. Prosesi sürətləndirmək üçün kitablar adətən əlifba sırası ilə və ya kateqoriyalara görə düzülür. Məlumat bazasında indeks də eyni prinsiplə işləyir.

Formal olaraq indeks — cədvəldə sətirləri tez tapmaq üçün yaradılan xüsusi əlavə data strukturudur. O, lazım olan məlumatı tapmaq üçün baxmalı olduğun data miqdarını azaldır.

Bir növ indeksləri ensiklopediyadakı məzmun siyahısına bənzətmək olar, əgər kitabı cədvəl kimi təsəvvür etsək.
Bütün ensiklopediyanı başdan sona oxumaqdansa, məzmun siyahısından istifadə edib birbaşa lazım olan səhifəyə keçirsən.

Təsəvvür elə ki, employees cədvəlində 100 min işçi var. Əgər "Min" soyadlı işçini axtarırsansa, indeks olmadan bütün cədvəli bir-bir yoxlamalısan (bu çox vaxt aparır). İndeks olanda isə axtarış xeyli tez olur, çünki Postgres harada axtaracağını bilir.

İndekslər necə işləyir?

İndekslərin sorğuları necə sürətləndirdiyini başa düşmək üçün onların pərdəarxası nə etdiyini bilmək lazımdır. İndeks bir və ya bir neçə sütun əsasında yaradılır və məlumatları axtarış üçün əlverişli struktura çevirir.

PostgreSQL-də indekslər ən çox B-Tree (Balanslaşdırılmış ağac) data strukturundan istifadə edir. Bu belə işləyir:

  1. İndeks yaradılır: indeks üçün seçilən sütunlardakı məlumatlar ağac şəklində təşkil olunur.
  2. Axtarış zamanı: PostgreSQL bütün cədvəli skan etmək əvəzinə, indeksdən istifadə edib lazım olan sətirləri tez tapır.
  3. Ağac strukturu: ağac sıralanıb, bu da bir yazıdan digərinə tez keçməyə imkan verir (binary search alqoritmi).

Nümunə: deyək ki, 1 milyon sətri olan cədvəlimiz var. İndeks olmadan milyon yazını yoxlamaq lazımdır. İndeks olanda PostgreSQL axtarışı bir neçə onluğa endirə bilər.

İndekslər nə vaxt istifadə olunmalıdır?

İndekslər oxuma əməliyyatlarını, məsələn: axtarış, filtrasiya, sıralama kimi işləri xeyli sürətləndirir. Amma bunun əvəzində yazma əməliyyatları (məsələn, INSERT, UPDATE, DELETE) bir az yavaşlayır, çünki data dəyişəndə indeks də yenilənməlidir.

İndekslərin mütləq lazım olduğu hallar

Tez-tez axtarış sorğuları: Əgər tez-tez konkret dəyərlərə görə sətirləri axtarırsansa, məsələn:

SELECT * FROM employees WHERE last_name = 'Min';

Məlumatların filtrasiyası: WHERE və ya HAVING şərtlərindən istifadə edəndə:

SELECT * FROM employees WHERE salary > 50000;

Məlumatların sıralanması: ORDER BY istifadə edəndə:

SELECT * FROM employees ORDER BY hire_date DESC;

Cədvəllərin birləşdirilməsi (JOIN): Əgər tez-tez cədvəlləri konkret sütunlara görə birləşdirirsənsə.

*Nə vaxt *İndeks istifadə etməyə DƏYMİR

  • Əgər cədvəl çox kiçikdirsə (məsələn, 10-50 sətr), indeks sürət baxımından hiss olunacaq fərq yaratmayacaq.
  • İndeks yaradılan sütun sorğularda nadir hallarda istifadə olunursa.
  • Sütunda çox az unikal dəyər varsa (məsələn, gender sahəsi, cəmi 2-3 dəyəri var).

Nümunə: yalnız iki mümkün dəyəri olan status sahəsində indeks yaratmaq — "aktiv" və "qeyri-aktiv" — mənasızdır.

İndekslərin performansa təsiri

Artıq gördüyün kimi, indekslər oxuma sorğularını sürətləndirir, amma yazma əməliyyatlarını bir az ləngidir. Səbəb odur ki, sətir əlavə, yenilənəndə və ya silinəndə PostgreSQL indeksdəki məlumatı da yeniləməlidir.

İndekslər və performans arasında balans

  • Tez-tez dəyişən cədvəllərdə indekslərin sayına diqqət etmək lazımdır.
  • Əsas yük oxuma əməliyyatlarındadırsa, indekslər vacibdir.

İndekslərin real həyatda faydası

Praktikada indekslər geniş istifadə olunur:

  1. Web tətbiqlərin optimizasiyası: SQL sorğularının tez icrası ilə səhifələrin yüklənmə vaxtını azaldır.
  2. Böyük cədvəllərlə işləmək: indekssiz milyonlarla sətri olan cədvəllərdə sorğular dəqiqələrlə çəkə bilər.
  3. Miqyaslana bilmək: indekslər böyük data həcmlərini effektiv işləməyə imkan verir.

Məsələn, məhsul və sifariş bazası olan internet mağaza indekslərsiz işləyə bilməz, yoxsa müştərilər səhifənin yüklənməsini illərlə gözləyər.

2
Tapşırıq
SQL SELF, səviyyə, dərs
Bağlanıb
Cədvəldə indeksin yaradılması
Cədvəldə indeksin yaradılması
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION