Sobes.tech
Middle

Kā tiek izmantots indekss lielā tabulā?

sobes.tech AI

Atbilde no AI

Liels tabulas indekss ievērojami paātrina datu atlases (SELECT) operācijas, kā arī izmaiņu (UPDATE, DELETE) operācijas, ja tiek izmantots WHERE nosacījums ar indeksētām kolonnām. Bez indeksa datu bāze ir spiesta skenēt visu tabulu (full table scan), kas ir ļoti lēni lielu datu apjomu gadījumā.

Izmantojot indeksu, datu bāze vispirms piekļūst indeksu struktūrai (parasti B-koks), kas ir daudz mazāka par pašu tabulu un satur sakārtotas atsauces uz datu rindām. Atrodot nepieciešamās atsauces indeksā, datu bāze ātri un tieši piekļūst prasītajām rindām.

Svarīgi:

  • Indeksi aizņem vietu uz diska.
  • Indeksu izveide un uzturēšana INSERT un UPDATE operāciju laikā prasa papildu resursus.
  • Pārāk daudz indeksu vai nepareizi izvēlēti indeksu var palēnināt rakstīšanas operācijas.

Ruby on Rails piemērs indeksu izveidei:

# Indeksa izveide uz kolonnas 'email' tabulā 'users'
add_index :users, :email

# Unikāla indeksa izveide uz kolonnas 'username'
add_index :users, :username, unique: true

# Sastādīta indeksa izveide uz kolonnām 'user_id' un 'product_id'
add_index :orders, [:user_id, :product_id]

SQL piemērs, kā izmantot indeksu (izpilda datu bāze):

-- Vaicājums, kas izmantos indeksu uz kolonnas 'email'
SELECT * FROM users WHERE email = 'test@example.com';