¿Es importante el orden de las columnas en una definición de clave primaria de Postgresql?

¿Es importante el orden de las columnas en una definición de clave primaria de Postgresql?

Postgresql le permite definir una clave principal usando un grupo de columnas en lugar de una si lo desea, así:

PRIMARY KEY(a_id, b_id)

Pero, ¿es significativo el orden de las columnas en esta definición? ¿Existe alguna diferencia práctica o real entre lo anterior y lo siguiente?

PRIMARY KEY(b_id, a_id)

La documentación no aborda esto directamente. Implica que el orden no debe ser significativo, y cuando consulto las tablas del catálogo de información no veo nada que note la diferencia en el orden de los parámetros.

Pero el uso del \dcomando en dos tablas usando las definiciones alternativas y el orden de las columnas como se describe en el resultado sí cambia. Aparentemente hay algo pg_catalogque conserva el orden de la definición de clave primaria, pero ¿implica esto que existe alguna diferencia funcional entre las dos definiciones?

Gracias

Respuesta1

Pero, ¿es significativo el orden de las columnas en esta definición? ¿Existe alguna diferencia práctica o real entre lo anterior y lo siguiente?

El orden de las columnas en PRIMARY KEYes importante porque el UNIQUEíndice del árbol b subyacente se crea con los atributos en ese orden y eso afecta la eficiencia de la búsqueda del índice. Por lo general, primero desea los atributos más selectivos. Esto sólo afecta el rendimiento, no cambia el significado de las consultas.

No haysemánticodiferencia, porque UNIQUE (a, b)implica UNIQUE (b,a).

información relacionada