Ist die Reihenfolge der Spalten in einer Postgresql-Primärschlüsseldefinition von Bedeutung?

Ist die Reihenfolge der Spalten in einer Postgresql-Primärschlüsseldefinition von Bedeutung?

Postgresql ermöglicht Ihnen, bei Bedarf einen Primärschlüssel mithilfe einer Spaltengruppe statt einer einzigen zu definieren, und zwar wie folgt:

PRIMARY KEY(a_id, b_id)

Aber ist die Reihenfolge der Spalten in dieser Definition von Bedeutung? Gibt es einen praktischen oder tatsächlichen Unterschied zwischen dem Obigen und dem Folgenden:

PRIMARY KEY(b_id, a_id)

Die Dokumentation geht nicht direkt darauf ein. Sie impliziert, dass die Reihenfolge nicht von Bedeutung sein sollte, und wenn ich die information_catalog-Tabellen abfrage, sehe ich nichts, was auf den Unterschied in der Parameterreihenfolge hinweist.

Wenn Sie den \dBefehl jedoch auf zwei Tabellen mit den alternativen Definitionen anwenden, ändert sich die Reihenfolge der Spalten, wie sie in der Ausgabe beschrieben wird. Offensichtlich gibt es etwas, pg_catalogdas die Reihenfolge der Primärschlüsseldefinition beibehält, aber bedeutet das, dass es überhaupt einen funktionalen Unterschied zwischen den beiden Definitionen gibt?

Danke

Antwort1

Aber ist die Reihenfolge der Spalten in dieser Definition von Bedeutung? Gibt es einen praktischen oder tatsächlichen Unterschied zwischen dem Obigen und dem Folgenden:

Die Reihenfolge der Spalten ist insofern PRIMARY KEYvon Bedeutung, als dass der zugrunde liegende UNIQUEB-Tree-Index mit den Attributen in dieser Reihenfolge erstellt wird, was sich auf die Effizienz der Indexsuche auswirkt. Im Allgemeinen möchten Sie die selektivsten Attribute zuerst haben. Dies wirkt sich nur auf die Leistung aus, ändert jedoch nicht die Bedeutung der Abfragen.

Es gibt keinSemantikUnterschied, weil UNIQUE (a, b)impliziert UNIQUE (b,a).

verwandte Informationen