0
我需要优化下面的查询,但不能想知道如何。优化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,10K 在tdimunicipio,在tdivia 970K其他只有几行。
它需要一点点时间,我想知道是否有可能达到100 - 200 milis。
更新:
最后,我们已经创建了CP,codproine一个新的中间表和codmunie预先计算和编译成一个视图,然后进行第一次查询,从这一观点得到数据,这得到查询约300-400 Millis。它不如我们想要的那么好,但没关系。
感谢
你目前的'EXPLAIN PLAN'对于这个查询说了什么? – Dan 2010-08-03 02:11:24
每个表中有多少行,以及您合理预期查询需要多长时间。 – 2010-08-03 03:08:56
加里我在tdinumvias有大约11M,tdimunicipio有10K,tdivia有970K,其他人只有几排。它需要一点点时间,我想知道是否有可能达到100 - 200 milis。 – Fgblanch 2010-08-03 03:37:52