Ayuda en Optimizacion de Vista

19/02/2004 - 20:55 por Dany Acosta | Informe spam
Amigos es recomendale Contruir una vista que contenga sentencias
UNION ALL

Ejmplo.

Create View Vista1 AS
Select Campo1,Campo2,Campo3,Campo4 From tabla1
union all
select campo1,campo2,campo3, campo4 from tabla2
union all
select campo1, campo2, campo3, campo4 from tabla3

y despues obtener mediante otra sentencia un acumulado osea

select campo1,sum(campo3) as Sum_Campo3, Sum(Campo4) as Sum_Campo4
From Vista1 Where campo1='XXX' and Campo2<1000.00
Group by campo1

Sabiendo que Cada Tabla contiene por Año
Tabla1 --> 10,000 Registros
Tabla2 --> 600,000 Registros
Tabla3 --> 300,000 Registros

Espero sus comentarios sobre si es Optimo la vista de esta manera o que
otra existe de hacerlo optima ya que los datos que necesito estan en
las tres tablas y necesito acumular por todo..

Gracias

Dany Acosta
 

Leer las respuestas

#1 Maximiliano Damian Accotto
19/02/2004 - 23:22 | Informe spam
Hola, malo no es si tienes buenos indices y todo ello, pero quizas podamos
ver otra alternativa, debes primero ver si se pueden vincular no pero
podrias de ver algo asi como:


Select tusprimeroscampos from tuprimertabla join (select campos from tu
segundatabla) dos
on tuprimertabla.campoid = dos.campoid

Adentro del Join podrias poner max,min, lo que haga falta.

Luego adelante podes usar tambien max pero sobre la segunda tabla, algo asi
como:

max(dos.campo) as pepe

y asi!! tambien podrias tener los campos en columnas de esta forma y luego
solo surmarlos con un simlple plus

Ahora por la cantidad de registros mirarias esto:

1.Solo seleccionar los campos que sean necesario y no usar el *
2.Tener buenos indices para los join y los where


Con esto deberias andar lo mas bien, una cosa que podes probar es en cuanto
pone denso al Servidor, esto lo podes hacer con el Visor de Sucesos y ahi
podes por ej monitoriar:

% Cpu
Cantidad de Bloqueos
Tiempo de espera de Bloqueos
Paginas /seg


Salu2

Maximiliano Damian Accotto
Gerente de IT
Fundicion San Cayetano S.A.
Buenos Aires Argentina
-
maxi_accotto[arroba]speedy[.]com[.].ar
MSN:



"Dany Acosta" escribió en el mensaje
news:
Amigos es recomendale Contruir una vista que contenga sentencias
UNION ALL

Ejmplo.

Create View Vista1 AS
Select Campo1,Campo2,Campo3,Campo4 From tabla1
union all
select campo1,campo2,campo3, campo4 from tabla2
union all
select campo1, campo2, campo3, campo4 from tabla3

y despues obtener mediante otra sentencia un acumulado osea

select campo1,sum(campo3) as Sum_Campo3, Sum(Campo4) as Sum_Campo4
From Vista1 Where campo1='XXX' and Campo2<1000.00
Group by campo1

Sabiendo que Cada Tabla contiene por Año
Tabla1 --> 10,000 Registros
Tabla2 --> 600,000 Registros
Tabla3 --> 300,000 Registros

Espero sus comentarios sobre si es Optimo la vista de esta manera o que
otra existe de hacerlo optima ya que los datos que necesito estan en
las tres tablas y necesito acumular por todo..

Gracias

Dany Acosta

Preguntas similares