Имеет ли значение порядок столбцов в определении первичного ключа PostgreSQL?

Имеет ли значение порядок столбцов в определении первичного ключа PostgreSQL?

Postgresql позволяет при желании определить первичный ключ, используя группу столбцов вместо одного, например:

PRIMARY KEY(a_id, b_id)

Но имеет ли значение порядок столбцов в этом определении? Есть ли какая-либо практическая или фактическая разница между вышеприведенным и нижеприведенным:

PRIMARY KEY(b_id, a_id)

Документация не рассматривает это напрямую. Она подразумевает, что порядок не должен иметь значения, и когда я запрашиваю таблицы information_catalog, я не вижу ничего, что могло бы указать на разницу в порядке параметров.

Но использование \dкоманды на двух таблицах с использованием альтернативных определений и порядка столбцов, как описано в выводе, действительно меняется. По-видимому, есть что-то, pg_catalogчто сохраняет порядок определения первичного ключа, но означает ли это, что есть какая-либо функциональная разница между двумя определениями?

Спасибо

решение1

Но имеет ли значение порядок столбцов в этом определении? Есть ли какая-либо практическая или фактическая разница между вышеприведенным и нижеприведенным:

Порядок столбцов в PRIMARY KEYважен, поскольку базовый UNIQUEиндекс b-tree создается с атрибутами в этом порядке, и это влияет на эффективность поиска индекса. Обычно сначала нужно получить наиболее селективные атрибуты. Это влияет только на производительность, но не меняет смысла запросов.

Здесь нетсемантическийразница, поскольку UNIQUE (a, b)подразумевает UNIQUE (b,a).

Связанный контент