Возможно, вы захотите пересмотреть хранение XML в базе данных, вместо этого вы можете посмотреть на вставку данных в связанные таблицы, так как использование XML является плохой заменой для реляционного хранилища. Даже если вы используете XML в базе данных, используйте тип XML, а не тип TEXT, и создайте такой индекс (да, в принципе вам потребуется индекс для выражения xpath):
CREATE INDEX my_funcidx ON my_table USING GIN ( CAST(xpath('/bank/name/text()', xmlfield) AS TEXT[]) );
затем запросите это так:
SELECT * FROM my_table WHERE CAST(xpath('/bank/name/text()', xmlfield) AS TEXT[]) @> '{Citi Bank}'::TEXT[];
и это будет использовать индекс, как покажет EXPLAIN.
Важной частью является CASTing to TEXT [], так как XML [], который возвращает функция xpath, по умолчанию не индексируется.