Если вы пишете пользовательскую функцию в C, вы можете иметь прямой доступ к данным в файлах данных.
Но если вы не намерены создавать повреждение данных, вам придется следовать протоколам PostgreSQL, учитывать видимость, принимать и уважать блокировки и т. Д., Поэтому вам лучше использовать API PostgreSQL.
Например, вы можете обойти синтаксический анализатор запросов и оптимизатор и напрямую записать сканирование индекса в таблицу. Но тогда вы можете получить почти такую же производительность, если будете использовать подготовленное утверждение.
Обход SQL, вероятно, не является разумной идеей в большинстве случаев, но вы можете использовать серверный интерфейс программирования для запуска SQL из кода C внутри бэкэнда, чтобы избежать циклических обращений клиент-сервер.