Sobes.tech
Middle

Kuidas kasutatakse indeksit suure tabeli puhul?

sobes.tech AI

Vastus AI-lt

Indeks suurtes tabelis kiirendab oluliselt andmete valiku (SELECT) operatsioone ning ka muudatusi (UPDATE, DELETE), kui kasutatakse WHERE tingimust indekseeritud veergudega. Ilma indeksita peab andmebaas skannima kogu tabeli (full table scan), mis on suurte andmemahtude korral väga aeglane.

Indeksit kasutades pöördub andmebaas esmalt indeksi struktuurile (tavaliselt B-puu), mis on palju väiksem kui tabel ise ja sisaldab järjestatud viiteid andmeridadele. Leides vajalikud viited indeksis, pääseb andmebaas kiiresti ja otse soovitud ridadele.

Oluline:

  • Indeksid võtavad ruumi kettal.
  • Indeksite loomine ja hooldus INSERT ja UPDATE operatsioonide ajal nõuab täiendavaid ressursse.
  • Liiga palju indekseid või valesti valitud indekseid võib aeglustada kirjutamisoperatsioone.

Ruby on Rails näide indeksi loomise kohta:

# Indeksi loomine veerule 'email' tabelis 'users'
add_index :users, :email

# Unikaalse indeksi loomine veerule 'username'
add_index :users, :username, unique: true

# Koostatud indeksi loomine veergudele 'user_id' ja 'product_id'
add_index :orders, [:user_id, :product_id]

SQL näide indeksi kasutamisest (töötleb andmebaas):

-- Päring, mis kasutab indeksi veerule 'email'
SELECT * FROM users WHERE email = 'test@example.com';