Si crea una clave primaria compuesta, en (x, y, z)
, PostgreSQL implementa esto con la ayuda de un UNIQUE
índice btree de varias columnas en (x, y, z)
. Además, las tres columnas son NOT NULL
(implícitamente), que es la principal diferencia entre una PRIMARY KEY
y un UNIQUE INDEX
.
Además de las restricciones obvias en sus datos, el índice de varias columnas también tiene un efecto algo diferente en el rendimiento de las consultas que tres índices individuales en x
, y
y z
.
Discusión relacionada sobre dba.SE:
- Funcionamiento de índices en PostgreSQL
Con ejemplos, puntos de referencia, debates y perspectivas sobre la nueva función de escaneos de solo índice en Postgres 9.2.
En particular, una clave principal en (x, y, z)
acelerará las consultas con condiciones en x
, (x,y)
o (x,y,z)
de manera óptima También ayudará con consultas sobre y
, z
, (y,z)
o (x,z)
pero en mucha menor medida.
Si necesita acelerar las consultas sobre las últimas combinaciones, es posible que desee cambiar el orden de las columnas en su restricción PK y/o crear uno o más índices adicionales. Ver:
- ¿Un índice compuesto también es bueno para consultas en el primer campo?