In order to define a GIN index on an array and scalar field (for example) you need to enable the btree_gin extension in PostgreSQL. Then you can define your indexes as a GIN index.

However I don't understand if, under the hood, PostgreSQL is using a btree structure or a GIN structure.


The resulting index is a true blood GIN index. These operator classes are not installed by default because they are rarely needed.

A single-column GIN index on a column of scalar type would be inferior to a B-tree index in almost every way.


Both. GIN indexes internally make use of a btree data structure. It is not identical to the btree data structure used in a proper BTREE index, but they share the same principles.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.