Если задержки со стороны базы данных отсутствуют, но время выполнения запросов всё равно высокое, оптимизация может быть направлена на следующие аспекты:
Да, опыт работы с базами данных без ORM есть. В таких случаях взаимодействие происходит напрямую через JDBC (Java Database Connectivity) или аналогичные низкоуровневые API.
Да, в PostgreSQL существуют кластеризованные (clustered) и некластеризованные индексы, хотя термин "кластеризованный индекс" в PostgreSQL отличается от других СУБД.
В моём последнем проекте SQL-запрос формировался динамически с использованием параметризированных запросов через JDBC PreparedStatement, чтобы избежать SQL-инъекций и повысить читаемость кода.