Sobes.tech
Senior

Кадом индексии мураккабро месозед?

sobes.tech AI

Ҷавоб аз AI

Ҳангоми сохтани индексии мураккаб барои шароитҳои WHERE A=a AND B=b ва WHERE B=b AND A=a, муҳим аст, ки тартиби сутунҳо дар индекс ва ёрирасонии филтркунии маълумотҳоро ба назар гирифт.

Агар дархостҳо ҳамеша ҳарду шарти якҷоя истифода шаванд, индекс дар (A, B) ё (B, A) кор мекунад, аммо самаранокӣ аз он вобаста аст, ки кадом сутун бештар селектив аст (яъне, бештар маълумотро филтр мекунад).

  • Агар A бештар селектив бошад, беҳтар аст индекс (A, B).
  • Агар B бештар селектив бошад, беҳтар аст (B, A).

Ҳамчунин, бояд ба назар гирифт, ки индекс (A, B) барои дархостҳо бо филтр дар A ё дар A ва B самаранок истифода мешавад, аммо на танҳо дар B.

Агар дархостҳо дар тартиби шароит фарқ кунанд ва баъзан танҳо дар як майдон бошанд, метавон ду индекс ҷудогона созид ё индекс бо колонаҳои дарбаргирифта (covering index) истифода кард.

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

CREATE INDEX idx_a_b ON table_name (A, B);