2016-05-11 5 views
5

Ich benutze postgres_fdw, um eine Verbindung zwischen zwei Datenbanken zu erstellen. Ich habe dann die Fremdtabellen eingerichtet und einige Einfügungen aus den Fremdtabellen in meine Live-Tabellen eingefügt. Ich habe bemerkt, dass es einige Zeit braucht, da sie keine Indizes haben.Index für fremde Tabelle erstellen PostgreSQL

können Sie einen Index auf einem fremden Tabelle erstellen, ist es die Standard-

CREATE INDEX ON foreign_table_name (column)? 

Antwort

1

Nein, werden Sie eine Fehlermeldung erhalten:

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

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

Und es macht Sinn, da die Abfrage „Reise "durch das Netz gehen und die Daten von der ursprünglichen Datenbank jedes Mal abfragen, wenn Sie die Tabelle abfragen (speichert nicht Daten zum Index).

Was Sie tun können, ist zu verwenden, erklären Sie ausführlich, um die Abfrage zu erhalten, die auf der anderen Seite ausgeführt wird, und indexieren Sie die entfernte Tabelle entsprechend.

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 

Hoffe, dass hilft. Viel Glück!