Esto es complementario a la respuesta anterior de Erwin, pero PostgreSQL admite varios tipos de índices. Estos no son generalmente mutuamente excluyentes. Puedes pensar en esto como:
- Método de índice (btree, GiST, GIN, etc.). Elija uno, si es necesario (btree es el predeterminado)
- Parcial o completo. Si es parcial, use una cláusula where
- Directo o funcional. Puede indexar la salida de funciones.
- Único o no único
Todos estos se pueden combinar de varias maneras. Todo lo que está haciendo aquí es usar las características únicas y parciales, de modo que le brinde índices únicos parciales (que son extremadamente útiles a medida que los descubre).
Pero suponga que desea tener un índice que no distinga entre mayúsculas y minúsculas en el campo del subconjunto donde el tipo es verdadero. Luego agregaría una definición funcional:
CREATE INDEX my_index_name_idx_u ON tbl (lower(subset)) WHERE type;
Tenga en cuenta que esto crea un índice único en la salida de la función lower () llamada en el atributo del subconjunto donde type es verdadero.