Создать индекс для внешней таблицы PostgreSQL

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

Можете ли вы создать индекс на сторонней таблице, это стандарт

CREATE INDEX ON foreign_table_name (column)?  

person uraza    schedule 11.05.2016    source источник


Ответы (1)


Нет, вы получите сообщение об ошибке:

ERROR:  cannot create index on foreign table "tablename"
********** Error **********

ERROR: cannot create index on foreign table "tablename"
SQL state: 42809

И это имеет смысл, поскольку запрос будет «путешествовать» по сети и извлекать данные из исходной базы данных каждый раз, когда вы запрашиваете таблицу (не будет сохранять данные для индексации).

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

explain verbose select * from schema.foreign_table

"Foreign Scan on schema.foreign_table  (cost=25.00..1025.00 rows=1000 width=84)"
"  Output: field1, field2, field3
"  Remote server startup cost: 25"
"  Remote query: SELECT field1, field2, field3 FROM schema.original_table

Надеюсь, это поможет. Удачи!

person lsilva    schedule 12.05.2016