Meus 2 cents,
Sem conhecer melhor a estrutura fica complicado dar direcoes mais exatas, mas vamos no basico:
- paginacao
SELECT * FROM (
SELECT
idpedido, data_pedido, cliente, status
FROM
pedidos
WHERE
data_pedido BETWEEN :inicio AND :fim
AND idpedido > :ultimo_id_recebido
ORDER BY
idpedido ASC
)
WHERE ROWNUM <= 50;
A vantagem desta abordagem eh que se voce tiver um indice por idpedido, o oracle faz um range scan e o rownum forca a parar a partir do 50 registros - isso agiliza um bocado (mas so faz sentido se voce usar a paginacao baseada em um indice conhecido)
- Hints
O oracle tem um negocio chamado 'hints', o que permite forcar algum comportamento durante a query, p.ex. forcar o uso de um campo/indice ou mesmo criar um indice que fica desabilitado para o dia-a-dia exceto naquele uso especifico.
de uma olhada em Invisible Indexes e /*+ INDEX(tabela invisible_index_x) */
- Partition Range
No oracle eh possivel dividir uma tabela internamente baseado em um campo. Talvez particionar por data seja interessante.
- Materialized View
Sao views pre-processadas, se voce tem um "padrao" de pesquisas pode agilizar o processo
- Uso do OpenSearch (ou Elasticsearch dependendo do caso)
Dependendo do caso o OpenSearch pode ser uma alternativa, mas implica em infra mais complexa
- Cache usando MySQL/MariaDB, Redis, Cassandra, PostgreSQL
Uma alternativa ao OpenSearch/Elastisearch seria usar um banco "comum" para cache apenas de leitura - neste caso precisa entender como funcionam os dados para escolher a alternativa mais interessante.
A vantagem eh que sendo bancos "read-only" voce pode otimizar tudo no full, sem se preocupar em corrupcao de dados por queda - se der merda, so reconstroi a partir do oracle.
O OpenSearch/Elasticsearch eh a melhor alternativa (antes dele existir ja usei cache com bancos "read-only", e tambem funcionou OK) - mas tem o problema da replicacao de dados, onde o ideal eh fazer isso em batch, mas novamente, depende muito de como seus dados sao organizados.
Nao esqueca de compartilhar os caminhos seguidos e o resultado
Saude e Sucesso !