Python Postgres упорядочить по нескольким столбцам, а затем создать новый индекс

1

Я использую psycopg2 для подключения к базе данных postgres.

в базе данных ~ 200 миллионов строк, и я пытаюсь создать первичный ключ, упорядоченный по порядку нескольких столбцов, т.е.

part_id, date, time
A001   2014-10-23  00:00:00
A001   2014-10-23  00:00:10
...
A002   2014-10-23  00:00:00

Я могу сделать следующее:

ALTER TABLE data ADD COLUMN ID SERIAL PRIMARY KEY;

Но как я могу упорядочить part_id (который, хотя и является varchar, является числовым числом, как указано выше), тогда давайте сначала время и создадим столбец id в отсортированную таблицу?

Теги:
psycopg2

1 ответ

1
Лучший ответ

Вы можете добавить первичный ключ в столбцы дерева:

alter table data add primary key(part_id, date, time);

Тем не менее, многие опытные разработчики SQL считают, что первичный ключ должен использоваться только для идентификации строк и всего остального. В соответствии с этим подходом вам следует использовать простой первичный ключ id и при необходимости создавать дополнительные индексы, например

alter table data 
    add id serial primary key,
    add unique (part_id, date, time);

Это может показаться субоптимальным, потому что ему нужно два индекса вместо одного, но на практике он удобен и позволяет избежать некоторых ненужных осложнений.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню