sql >> Base de Datos >  >> RDS >> PostgreSQL

Clave primaria compuesta de PostgreSQL

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?