다음 쿼리를 최적화해야하지만 어떻게 할 수 있는지 궁금합니다.4 테이블 관련 Oracle 쿼리 최적화
select distinct v.codvia,
v.codproine,
v.codmunine,
tv.SIMBOLO as SIMBOLO_TIPO_VIA,
tv.NOMBRE as TIPO_VIA,
c.nombrevia as NOMBRE_VIA,
v.cp,
m.nombre as NOMBRE_MUNICIPIO ,
pr.nombre as NOMBRE_PROVINCIA
from tdinumvias v, tdimunicipio m, tdivia c, cditipovia tv, tdiprovincia pr
where (pr.codine = v.codproine) and
(m.codproine = v.codproine and m.codine = v.codmunine) and
(c.codproine = v.codproine and c.codmunine = v.codmunine and
c.codvia=v.codvia and tv.idtipovia=c.idtipovia)
위해 만든 인덱스가 있습니다 : v.codproine, v.codvia, v.codmunine, c.codmunine, pr.codine, m.codine, c.codproine, V는 .idtipovia 및 c.idtipovia
해당 테이블에는 성능이 여전히 매우 나쁩니다. 댓글에서
추가 : 테이블 크기는 tdinumvias에서 11M, tdimunicipio에서 10K, 나머지는 몇 행이 tdivia 에서 970K이다.
1 초 미만이 걸리며 100에서 200 밀리까지 얻을 수 있는지 궁금합니다.
업데이트:
마지막으로 우리가 미리 계산하고보기로 컴파일 codmunie CP, codproine로 새로운 중간 테이블을 생성 한은 다음 첫 번째 쿼리는이 뷰에서 데이터를 얻을 수 있도록,이 약에 쿼리를 얻는다 300-400 밀리미터. 우리가 원했던만큼 좋지는 않지만 괜찮습니다. 그들에 대한 필요성을 만드는 무엇 - 당신의 조인
SELECT DISTINCT v.codvia,
v.codproine,
v.codmunine,
tv.SIMBOLO as SIMBOLO_TIPO_VIA,
tv.NOMBRE as TIPO_VIA,
c.nombrevia as NOMBRE_VIA,
v.cp,
m.nombre as NOMBRE_MUNICIPIO ,
pr.nombre as NOMBRE_PROVINCIA
FROM tdinumvias v
JOIN tdimunicipio m ON m.codproine = v.codproine
AND m.codine = v.codmunine
JOIN tdivia c ON c.codproine = v.codproine
AND c.codmunine = v.codmunine
AND c.codvia = v.codvia
JOIN cditipovia tv ON tv.idtipovia = c.idtipovia
JOIN tdiprovincia pr ON pr.codine = v.codproine
검토 :
감사
내가
현재 'EXPLAIN PLAN'에서이 검색어에 대해 말하는 것은 무엇입니까? – Dan
각 테이블의 행 수와 쿼리가 예상되는 기간. –
게리 나는 tdinumvias에서 약 11M, tdimunicipio에서 10K, tdivia에서 970K를 얻었습니다. 나머지는 몇 줄 밖에 없습니다. 1 초도 안 걸렸고 100 ~ 200 밀리까지 얻을 수 있는지 궁금합니다. – Fgblanch