Pergunta

Eu tenho esse SQL:

SELECT
  *
FROM
  Requisicao r
  join convenio c on c.idconvenio = r.idconvenio
  join empresa e on e.idempresa = c.idempresa

Quando eu executá-lo eu recebo este plano de execução:

PLAN JOIN (C NATURAL,E INDEX (INTEG_160),R INDEX (INTEG_318))

O que significa que o índice do Convenio não foi utilizado (cada mesa tem seus índices)

Eu gostaria de entender um pouco melhor para que eu possa melhorar alguns problemas de desempenho que estou tendo com este sistema.

Graças.

Foi útil?

Solução

O que parece errado para você? Porque você não tem quaisquer condições (cláusula WHERE) servidor irá ler uma tabela, naturalmente, ou seja, desde a primeira linha para o último. Tendo em seletividade do índice consideração servido decidiu que seria melhor para ler c e para juntar-se registros de e e r.

Outras dicas

Eu concordo com Andrei. Se convenio.idconvenio tem baixa seletividade, o plano é bom.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top