aumentar rapidez en una select

03/06/2004 - 13:34 por reo | Informe spam
tengo el select:

select da1.campo4,da1.campo5,a1.campo1,c.campo2,d.campo2
from da1,a1,c,d
where da1.campo1=a1.campo1 and da1.campo2='555' and c.campo1=a1.campo2 and
d.campo1=a1.campo3
union all
select df1.campo4,df1.campo5,f1.campo1,c.campo2,d.campo2
from df1,f1,c,d
where df1.campo1=f1.campo1 and df1.campo2='555' and c.campo1=f1.campo2 and
d.campo1=f1.campo3
union all
select do1.campo4,do1.campo5,o1.campo1,c.campo2,d.campo2
from do1,o1,c,d
where da1.campo1=o1.campo1 and do1.campo2='555' and c.campo1=o1.campo2 and
d.campo1=o1.campo3
union all
select dt1.campo4,dt1.campo5,t1.campo1,c.campo2,d.campo2
from dt1,t1,c,d
where dt1.campo1=t1.campo1 and dt1.campo2='555' and c.campo1=t1.campo2 and
d.campo1=t1.campo3

esto me tarda 15 segundos desde el analizador de consultas.

Lo he metido cada select en una tabla temporal sin hacer uniones y tarda
igual.

hay alguna manera de que tarde menos.

muchas gracias
 

Leer las respuestas

#1 Javier Loria
03/06/2004 - 14:14 | Informe spam
Hola:
No veo muchas alternativas.
a) Indices: Usando el Analizador de Consultas ejecuta el Asistente para
Sugerir Indices.
b) Vista Materializada: Creas una Vista que tenga como columnas los
campos Campo2, Campo1, Campo4 y Campo5) y que provenga e las tablas DA1,
DF1, DO1 Y DT1 y que sobre esta vista se construya un indice sobre todos los
campos. (Esta depende de si tiene sentido en tu diseno de tablas esto es si
las filas que estan en DA1, no estan en DF1, etc).
Una consulta de cuantas filas estamos hablando en cada tabla?
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
reo escribio:
tengo el select:

select da1.campo4,da1.campo5,a1.campo1,c.campo2,d.campo2
from da1,a1,c,d
where da1.campo1¡.campo1 and da1.campo2='555' and
c.campo1¡.campo2 and d.campo1¡.campo3
union all
select df1.campo4,df1.campo5,f1.campo1,c.campo2,d.campo2
from df1,f1,c,d
where df1.campo1ñ.campo1 and df1.campo2='555' and
c.campo1ñ.campo2 and d.campo1ñ.campo3
union all
select do1.campo4,do1.campo5,o1.campo1,c.campo2,d.campo2
from do1,o1,c,d
where da1.campo1=o1.campo1 and do1.campo2='555' and
c.campo1=o1.campo2 and d.campo1=o1.campo3
union all
select dt1.campo4,dt1.campo5,t1.campo1,c.campo2,d.campo2
from dt1,t1,c,d
where dt1.campo1=t1.campo1 and dt1.campo2='555' and
c.campo1=t1.campo2 and d.campo1=t1.campo3

esto me tarda 15 segundos desde el analizador de consultas.

Lo he metido cada select en una tabla temporal sin hacer uniones y
tarda igual.

hay alguna manera de que tarde menos.

muchas gracias

Preguntas similares