> Что такое кардинальность колонок и зачем это знать (Go)
Уровень: junior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Employcity
Стек: Go
> Пример ответа
Кардинальность колонки - это количество уникальных значений в столбце таблицы базы данных. Она бывает высокой (например, ID пользователя - почти все записи уникальны) и низкой (например, поле "пол" - всего два-три значения). В Go, при работе с SQL через database/sql или ORM (GORM, sqlx), знание кардинальности критично для производительности запросов и индексов.
Например, если у нас есть таблица orders с колонкой status (низкая кардинальность: 'new', 'processing', 'shipped'), создание индекса на этой колонке часто неэффективно - запросы всё равно будут сканировать много строк. Вместо этого лучше использовать частичные индексы или композитные (например, (status, created_at)). В коде Go это может выглядеть так:
GO// Миграция с частичным индексом для низкой кардинальностиdb.Exec(`CREATE INDEX idx_new_orders ON orders (created_at) WHERE status = 'new'`)
Для колонок с высокой кардинальностью (например, email) индекс ускоряет поиск. Знание кардинальности помогает выбирать тип соединений (hash join vs nested loop) и избегать проблем с кешированием в Go-приложениях, когда запросы с низкой селективностью приводят к блокировкам или перегрузке БД.
> Похожие задачи по Go
Для чего нужно логирование
Как избежать race condition при одновременном чтении и записи в таблицу транзакций в Go
Можно ли отключить или ограничить запуск сборщика мусора в Go
Для чего нужен sync.RWMutex и когда его использовать в Go
> Похожие задачи по backend
Для чего нужно логирование
Как избежать race condition при одновременном чтении и записи в таблицу транзакций в Go
Можно ли отключить или ограничить запуск сборщика мусора в Go
Для чего нужен sync.RWMutex и когда его использовать в Go
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью