Sobes.tech
Middle

Чӣ гуна индекс дар ҷадвали калон истифода мешавад?

sobes.tech AI

Ҷавоб аз AI

Индекси дар ҷадвали калон ба таври назаррас амалиёти интихоб кардани маълумот (SELECT) ва инчунин амалиёти тағирот (UPDATE, DELETE) вақте ки шарти WHERE бо сутунҳои индексшуда истифода мешавад, суръат мебахшад. Бе индекс, базаи додаҳо бояд тамоми ҷадвалро скан кунад (full table scan), ки дар мавҷудоти калон хеле суст аст.

Ҳангоми истифодаи индекс, базаи додаҳо аввал ба сохтори индекс (одатан дарахти B) муроҷиат мекунад, ки нисбат ба худи ҷадвал хеле хурдтар аст ва истинодҳои мураттаб ба сатрҳои маълумотро дар бар мегирад. Пас аз ёфтани истинодҳои зарурӣ дар индекс, базаи додаҳо ба зудӣ мустақиман ба сатрҳои талабшуда дастрасӣ пайдо мекунад.

Мухим:

  • Индексҳо ҷойро дар диск мегиранд.
  • Таҳия ва нигоҳдории индексҳо дар вақти вуруд (INSERT) ва навсозӣ (UPDATE) ба захираҳои иловагӣ ниёз доранд.
  • Беш аз ҳад зиёд индексҳо ё индексҳои нодуруст интихобшуда метавонанд амалиётҳои навсозиро суст кунанд.

Маслиҳат барои сохтани индекс дар Ruby on Rails:

# Сохтани индекс дар сутуни 'email' дар ҷадвали 'users'
add_index :users, :email

# Сохтани индекси бенуқсон дар сутуни 'username'
add_index :users, :username, unique: true

# Сохтани индекси мураккаб дар сутунҳои 'user_id' ва 'product_id'
add_index :orders, [:user_id, :product_id]

Маслиҳат барои истифодаи индекс дар SQL (аз ҷониби базаи додаҳо иҷро мешавад):

-- Савол, ки индексро дар сутуни email истифода мебарад
SELECT * FROM users WHERE email = 'test@example.com';