Ellos no tienen ser único, pero sin duda se recomienda.
Todavía no he encontrado un escenario en el que quisiera crear un CI en una columna no única.
¿Qué sucede si crea un CI en una columna no única
¿Conduce esto a un mal rendimiento?
Agregar un uniqueifier sin duda añade algo de sobrecarga en el cálculo y almacenamiento.
Si esta sobrecarga será notable depende de varios factores.
- Cuántos datos contiene la tabla.
- ¿Cuál es la tasa de inserciones?
- Con qué frecuencia se usa el CI en una selección (cuando no existen índices de cobertura, casi siempre).
Editar
como señaló Remus en los comentarios, existen casos de uso en los que la creación de un CI no único sería una opción razonable. El hecho de que no haya encontrado uno de esos escenarios simplemente muestra mi propia falta de exposición o competencia (elija su elección).