Чтобы создать уникальный индекс для нескольких столбцов, все комбинации этих столбцов должны быть уникальными.То есть для составного индекса по пяти столбцам у нас может быть несколько экземпляров одинаковых значений в четырех столбцах, при условии, что пятый столбец содержит различные значения, чтобы дать уникальные комбинации для всех пяти столбцов.
Что произошло в вашем случаеявляется то, что вы удалили столбец из индекса "по деловым причинам" .Это означает, что вы потеряли столбец, который дал вам уникальные комбинации.Следовательно, вы не можете создать уникальный индекс для оставшихся четырех столбцов.
Ваши параметры:
- Восстановить удаленный столбец в индексе.Это может быть непрактичным, в зависимости от бизнес-драйвера, который приводит к этой ситуации.
- Определите записи, которые имеют общие комбинации , как @PhilippeMarschall показывает , и обновите или удалите их.Похоже, что это наименее желательный вариант.
- Создайте неуникальный индекс, если вам что-то нужно из соображений производительности.Вам следует запустить несколько тестов.
- Не беспокойтесь об индексе.Сделайте это, если индекс не удовлетворяет требованию к производительности.
Это такая же политическая проблема, как и техническая.Похоже, что кто-то выдвинул предложение - «Джей из Маркетинга говорит, что мы должны исключить COLUMN_23 из индекса» - но анализ воздействия, все другие вещи, которые необходимо изменить, не был завершен должным образом,
Таким образом, мы можем предлагать предложения, но не можем предлагать решения.Мы не знаем, почему у вас был уникальный индекс, и почему кто-то решил, что вам нужно удалить один из столбцов из индекса.Это ваша бизнес-логика, ваша модель данных и ваше приложение: только вы можете выбрать правильный подход.