2

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

PRIMARY KEY(a_id, b_id)

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

PRIMARY KEY(b_id, a_id)

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

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

Спасибо

1 ответ1

1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .