Обратите внимание, что PostgreSQL не может выполнять запросы только на основе данных индекса. Он должен посетить данные, чтобы определить, какая информация видна с точки зрения запроса; эта информация только в самих строках, а не в индексе. Вполне возможно, что весь индекс находится в оперативной памяти, но вы все еще видите интенсивный ввод-вывод, потому что таблица там не помещается.