Sobes.tech
Middle

Ako sa používa index v veľkej tabuľke?

sobes.tech AI

Odpoveď od AI

Index v veľkej tabuľke výrazne zrýchľuje operácie výberu dát (SELECT) a tiež operácie zmien (UPDATE, DELETE) pri použití podmienky WHERE s indexovanými stĺpcami. Bez indexu musí databáza prehľadávať celú tabuľu (full table scan), čo je pri veľkých objemoch dát veľmi pomalé.

Pri použití indexu databáza najskôr odkazuje na štruktúru indexu (zvyčajne B-strom), ktorá je oveľa menšia ako samotná tabuľa a obsahuje zoradené odkazy na riadky dát. Po nájdení potrebných odkazov v indexe databáza rýchlo priamo pristupuje k požadovaným riadkom tabuľky.

Dôležité:

  • Indexy zaberajú miesto na disku.
  • Vytváranie a údržba indexov pri operáciách vkladania (INSERT) a aktualizácie (UPDATE) vyžaduje ďalšie zdroje.
  • Príliš veľa indexov alebo nesprávne zvolené indexy môžu spomaliť operácie zápisu.

Príklad vytvorenia indexu v Ruby on Rails:

# Vytvorenie indexu na stĺpci 'email' v tabuľke 'users'
add_index :users, :email

# Vytvorenie unikátneho indexu na stĺpci 'username'
add_index :users, :username, unique: true

# Vytvorenie zloženého indexu na stĺpcoch 'user_id' a 'product_id'
add_index :orders, [:user_id, :product_id]

Príklad použitia indexu v SQL (vykonáva databáza):

-- Dotaz, ktorý bude využívať index na stĺpci email
SELECT * FROM users WHERE email = 'test@example.com';