unico primaria postgres llave foranea crear compuesta clave check campo agregar postgresql indexing composite-primary-key

postgresql - primaria - llave compuesta



Clave principal compuesta de PostgreSQL (3)

No, obtienes un índice para la clave principal de tres columnas.

En MySQL, cuando creo una clave primaria compuesta, digamos con las columnas X, Y, Z , las tres columnas se convierten en índices automáticamente. ¿Pasa lo mismo con Postgres?


Si crea una clave primaria compuesta, en (x, y, z) , PostgreSQL implementa esto con la ayuda de un UNIQUE índice btree de múltiples columnas en (x, y, z) . Además, las tres columnas tienen que ser NOT NULL , por supuesto, que es la diferencia principal entre una PRIMARY KEY y 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 .

Tuvimos una discusión muy minuciosa sobre eso recientemente en dba.SE en esta pregunta relacionada . Con ejemplos, puntos de referencia, discusión y perspectivas para la próxima función de escaneos indexados en la versión 9.2 .

En particular, una tecla principal en (x, y, z) acelerará consultas con condiciones en x , (x,y) o (x,y,z) manera óptima. También ayudará con las consultas en y , z , (y,z) o (x,z) pero en un grado mucho menor.

Si necesita acelerar las consultas en las últimas combinaciones, puede cambiar el orden de la columna en su restricción PK o crear uno o más índices adicionales.


Yes :

PostgreSQL crea automáticamente un índice único cuando se define una restricción única o clave principal para una tabla. El índice cubre las columnas que conforman la clave primaria o la restricción única (un índice de varias columnas, si corresponde), y es el mecanismo que impone la restricción.