Sobes.tech
Junior — Middle

შესაძლებელია თუ არა ერთობლივი ინდექსის შექმნა რამდენიმე სვეტზე მონაცემთა ბაზაში?

sobes.tech AI

პასუხი AI-სგან

დიახ, უმეტეს მონაცემთა ბაზის მართვის სისტემებში შესაძლებელია მრავალი სვეტზე კომპოზიციური ინდექსის (composite index) შექმნა. ასეთი ინდექსი აჩქარებს შეკითხვებს, რომლებიც ფილტრავენ ან სორტირებას ახდენენ ამ სვეტების კომბინაციით.

Go-ში, მონაცემთა ბაზებთან მუშაობისას, ჩვეულებრივ გამოიყენება SQL შეკითხვა ინდექსის შესაქმნელად. მაგალითად, PostgreSQL-ისთვის:

CREATE INDEX idx_name ON table_name (column1, column2);

თუ იყენებთ ORM-ს ან ბიბლიოთეკას Go-ში მონაცემთა ბაზებთან სამუშაოდ, მაგალითად GORM, კომპოზიციური ინდექსის შექმნა ასე შეიძლება:

import (
    "gorm.io/gorm"
)

type User struct {
    ID        uint
    FirstName string `gorm:"index:idx_name,priority:1"`
    LastName  string `gorm:"index:idx_name,priority:2"`
}

// მიგრაციის დროს GORM შექმნის კომპოზიციურ ინდექსს, სახელად idx_name, FirstName და LastName-ზე

ამ გზით, კომპოზიციური ინდექსი ეხმარება ოპტიმიზირებაში იმ შეკითხვებს, რომლებიც იყენებენ რამდენიმე სვეტს WHERE ან ORDER BY პირობებში.