Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Otimizador de sql para grandes tabelas de banco de dados


Você provavelmente deve começar com EXPLAIN PLAN .

Em seguida, edite sua pergunta e poste a instrução SQL e a saída de EXPLAIN PLAN.

Mais tarde. . .

Não vou te ajudar muito nessa questão. 269 ​​linhas, pelo menos 29 SELECTs, consultas paralelas, bancos de dados remotos, associações externas (estilo antigo) e assim por diante.

O melhor conselho que posso te dar é
  • obtenha mais informações do EXPLAIN PLAN e
  • simplifique o problema.

A tabela de planos tem mais colunas do que normalmente são postadas. As colunas COST, CARDINALITY, BYTES e TIME podem ser úteis para priorizar seu esforço de ajuste.

Você tem 10 varreduras completas de tabela nessa consulta. ("TABLE ACCESS FULL" no plano de consulta.) Isso geralmente é um mau sinal; varreduras de tabela completa geralmente levam um tempo relativamente longo para serem executadas. Não é sempre um mau sinal. Uma varredura completa de uma pequena tabela pode ser mais rápida do que uma varredura de índice.

Comece obtendo a saída EXPLAIN PLAN para cada uma das 29 instruções SELECT em sua consulta. Se algum deles mostrar uma verificação completa da tabela, você provavelmente poderá melhorar seu desempenho com índices adequados . (O Oracle suporta muitos tipos diferentes de índices. Não negligencie as oportunidades para índices de várias colunas.) Em qualquer caso, a saída EXPLAIN PLAN ajudará você a identificar o mais lento dos 29 SELECTs.