문제
이 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의 선택성이 낮 으면 계획은 정상입니다.
제휴하지 않습니다 StackOverflow