Postgres admite los tipos de indexación B-tree, R-tree, Hash, GiST y GIN. La indexación de árbol B es la más común y se adapta a los escenarios más comunes. Esta es la sintaxis:
CREATE INDEX idex_name ON table_name USING btree(column1, column2);
Aquí está el createindex documentación y aquí hay más información sobre diferentes indextypes en postgres.
El tipo de índice que debe usar depende de los tipos de operaciones que desee realizar. Si simplemente desea verificar la igualdad, entonces el índice hash es el mejor. Para las operaciones más comunes (por ejemplo, comparación, coincidencia de patrones), se debe usar el árbol B. Personalmente, nunca he usado la indexación GiST o GIN. ¿ALGÚN Gurú por ahí?
La documentación describe todos estos tipos. Ellos pueden ayudarte mejor que yo :)
Espero que esto ayude.