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 პირობებში.