Sobes.tech
Middle

Kaip naudojamas indeksas didelėje lentelėje?

sobes.tech AI

Atsakymas iš AI

Didelis lentelės indeksas žymiai pagreitina duomenų paieškos (SELECT) operacijas, taip pat keitimo (UPDATE, DELETE) operacijas, kai naudojama WHERE sąlyga su indeksuotais stulpeliais. Be indekso, duomenų bazė turi nuskaityti visą lentelę (full table scan), kas labai lėtai veikia dideliuose duomenų kiekiuose.

Naudojant indeksą, duomenų bazė pirmiausia kreipiasi į indekso struktūrą (dažniausiai B-medį), kuri yra daug mažesnė nei pati lentelė ir turi išrikiuotus nuorodų į duomenų eilutes. Suradus reikiamas nuorodas indekse, duomenų bazė greitai ir tiesiogiai pasiekia reikiamas eilutes.

Svarbu:

  • Indeksai užima vietos diske.
  • Indeksų kūrimas ir priežiūra INSERT ir UPDATE operacijų metu reikalauja papildomų išteklių.
  • Per daug indeksų arba netinkamai pasirinkti indeksai gali sulėtinti rašymo operacijas.

Ruby on Rails pavyzdys indeksui sukurti:

# Sukurti indeksą stulpelyje 'email' lentelėje 'users'
add_index :users, :email

# Sukurti unikalų indeksą stulpelyje 'username'
add_index :users, :username, unique: true

# Sukurti sudėtą indeksą stulpeliuose 'user_id' ir 'product_id'
add_index :orders, [:user_id, :product_id]

SQL pavyzdys, kaip naudoti indeksą (vykdomas duomenų bazės):

-- Užklausa, naudosianti indeksą stulpelyje 'email'
SELECT * FROM users WHERE email = 'test@example.com';