Crear un índice único en una columna no única

No estoy seguro de si esto es posible en PostgreSQL 9.3+, pero me gustaría crear un índice único en una columna no única. Para una mesa como:

CREATE TABLE data (
  id SERIAL
  , day DATE
  , val NUMERIC
);
CREATE INDEX data_day_val_idx ON data (day, val); 

Me gustaría poder consultar [rápidamente] solo los días distintos. Sé que puedo usardata_day_val_idx para ayudar a realizar la búsqueda distinta, pero parece que esto agrega una sobrecarga adicional si el número de valores distintos es sustancialmente menor que el número de filas en las cubiertas del índice. En mi caso, aproximadamente 1 en 30 días es distinto.

¿Es mi única opción crear una tabla relacional para rastrear solo las entradas únicas? Pensando:

CREATE TABLE days (
  day DATE PRIMARY KEY
);

Y actualice esto con un disparador cada vez que insertemos datos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta