Per the PGSQL 9.3 docs:
Because this is not always needed, and there are many choices available on how to index, declaration of a foreign key constraint does not automatically create an index on the referencing columns.
Yet after I create such a constraint, when I run \d <table>
I see that an index does in fact get created:
Indexes:
"table_primary_key" PRIMARY KEY, btree (id)
"fki_table_product_foreign_key" btree (product)
What could explain why this gets created? Do I still need to create another index on my product column to improve performance of queries on it?
create table
script[pgadmin]
according to information in your answer.