Je dois optimiser la requête suivante mais je ne suis pas capable de me demander comment.Optimiser une requête oracle liée à 4 tables
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)
il y a des indices créés pour: v.codproine, v.codvia, v.codmunine, c.codmunine, pr.codine, m.codine, c.codproine, v .idtipovia et c.idtipovia
Dans ses tables correspondantes, mais les performances sont toujours très mauvaises.
Ajouté des commentaires: Dimensions de la table sont 11M dans tdinumvias, 10K tdimunicipio, 970K dans tdivia les autres ont seulement quelques lignes.
Cela prend un peu moins d'une seconde et je me demandais s'il était possible de l'atteindre entre 100 et 200 milis.
Mise à jour:
Enfin, nous avons créé une nouvelle table intermédiaire avec cp, codproine et codmunie précalculées et compilé en vue, puis faire la première requête obtenir des données de ce point de vue, il obtient la requête dans environ 300-400 Millis. ce n'est pas aussi bon que nous le voulions mais c'est bon.
Merci
Que dit votre 'EXPLAIN PLAN' actuel pour cette requête? – Dan
Combien de lignes dans chacune de ces tables et combien de temps vous attendez-vous raisonnablement à ce que la requête prenne. –
Gary j'ai environ 11M à tdinumvias, 10K à tdimunicipio, 970K à tdivia les autres n'ont que quelques rangs. Cela prend un peu moins d'une seconde et je me demandais s'il était possible de l'atteindre entre 100 et 200 milis. – Fgblanch