문제

이 SQL이 있습니다.

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

실행하면이 실행 계획을 얻습니다.

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

Converio의 색인이 사용되지 않았다는 의미 (모든 테이블에는 인덱스가 있습니다)

이 시스템과 관련된 성능 문제를 개선 할 수 있도록 조금 더 잘 이해하고 싶습니다.

감사.

도움이 되었습니까?

해결책

당신에게 뭐가 잘못 보이는가? 조건이 없기 때문에 (조항) 서버는 자연스럽게 하나의 테이블을 읽습니다. 즉, 첫 번째 행에서 마지막 행까지. Index의 선택성을 고려하여 C에서 읽고 E와 R의 레코드에 가입하는 것이 더 나을 것이라고 결정했습니다.

다른 팁

나는 Andrei에 동의합니다. weanceio.idconvenio의 선택성이 낮 으면 계획은 정상입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top