Ответ
Нет, не должны. Индексы создаются для ускорения поиска и могут быть как уникальными, так и неуникальными.
- Неуникальный индекс: Допускает дублирование значений в индексируемых столбцах. Используется для оптимизации запросов с условиями
WHERE,ORDER BY,JOIN.CREATE INDEX idx_department_id ON employees(department_id); - Уникальный индекс: Запрещает дублирование значений. Обеспечивает и ускорение запросов, и целостность данных (аналогично ограничению
UNIQUE CONSTRAINT).CREATE UNIQUE INDEX idx_user_email ON users(email);
Выбор типа индекса зависит от бизнес-логики: нужна ли гарантия уникальности данных или просто повышение производительности запросов по неключевым полям.
Ответ 18+ 🔞
А, ну это ж классика, блядь! Опять про индексы в базах данных спрашивают. Слушай, давай я тебе на пальцах, как Герасим Муму, объясню, только без утопления в озере, а то совесть потом заест, ёпта.
Так вот, индексы — это не про уникальность, а про скорость, сука! Это как алфавитный указатель в толстой книге. Ты же не листаешь всю «Войну и мир», чтобы найти князя Болконского? Ты в конец заглядываешь, где все фамилии по порядку. Вот индекс — это такой список в конце, блядь.
-
Неуникальный индекс — это как указатель «все упоминания слова «водка» в романе». Их может быть овердохуища, на каждой второй странице. Создаёшь, чтобы быстро найти всех сотрудников из отдела №3, например.
CREATE INDEX idx_department_id ON employees(department_id);Сделал — и база не будет всю таблицу
employeesшарить, как дура, а сразу в этот список глянет и выцепит нужных. Но если два Ивана в одном отделе сидят — да похуй, индекс пропустит. -
Уникальный индекс — это уже серьёзнее, блядь. Это как указатель «номера паспортов». И он орет: «Э, два одинаковых номера — это пиздец, так не бывает!». Он и скорость даёт, и следит, чтобы почта у пользователей не повторялась, например.
CREATE UNIQUE INDEX idx_user_email ON users(email);Попробуй завести второго Васю на почту
vasya@mail.ru— получишь по ебалу ошибкой, как от Герасима, если бы он заговорил.
Короче, выбор простой, блядь: если тебе просто быстро найти — бери обычный индекс. А если тебе надо быстро найти и чтобы неповторимо было — вот тут уже уникальный, пидарас шерстяной. Вся бизнес-логика на этом и строится. Понял, или тебе ещё раз, в рот меня чих-пых, на примере Муму объяснить?