Problema al consultar vista....

17/02/2004 - 20:52 por kno | Informe spam
Tengo una vista hecha sobre tres tablas, en total el
universo de registros es de 72000 reg. aprox. mi problema
esta en que al hacer una consulta sobre esta vista se
demora más de 30 minutos en ejecutarse. Las tablas todas
tienen indices ¿que debo revisar para que las consultas
sobre esta vista no demoren tanto?


Ipa..

Preguntas similare

Leer las respuestas

#6 Maximiliano D. A.
18/02/2004 - 13:56 | Informe spam
Me vuelvo a leer y le erre en el primer punto :-(, la vista esta bien, creo
que deberias ver el tema del asistente de Indices y la actualizacion de
Estadisticas, ahh y el tema del cursor no.

Ahora como consulta no? que es lo que se pone lento, la ejecucion de la
vista o todo el proceso?

proba en en QA (Query analizer) hacerle un select a la vista (Select * from
vista)

Si aca tambien tarda entonces deberias de ver las opciones que te indique
antes, si aca no tarda el problema lo estas teniendo en otro lado.


Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"Kno" escribió en el mensaje
news:1283901c3f614$d91a3ca0$

Este es el código de la vista:

CREATE VIEW TRA_TRAINPCCAF_ENT
as
SELECT
TRABAJADOR.REC_PERIODO,
TRABAJADOR.CON_RUT,
TRABAJADOR.CON_CORREL,
TRABAJADOR.RPR_PROCESO,
TRABAJADOR.NRO_COMPROBANTE,
TRABAJADOR.SUC_COD,
TRABAJADOR.USU_CODIGO,
ENTIDAD_PREVISIONAL.ENT_RUT,
ENTIDAD_PREVISIONAL.ENT_TIPO,
ENTIDAD_PREVISIONAL.ENT_CODIFICACION,
TRABAJADOR.TRA_REG_SAL,
TRABAJADOR.TRA_REG_PREV
FROM EMPRESA
INNER JOIN TRABAJADOR ON
EMPRESA.REC_PERIODO = TRABAJADOR.REC_PERIODO
AND EMPRESA.CON_RUT = TRABAJADOR.CON_RUT
AND EMPRESA.CON_CORREL = TRABAJADOR.CON_CORREL
AND EMPRESA.RPR_PROCESO = TRABAJADOR.RPR_PROCESO
AND EMPRESA.NRO_COMPROBANTE TRABAJADOR.NRO_COMPROBANTE
INNER JOIN TRA_INPCCAF ON
TRABAJADOR.REC_PERIODO = TRA_INPCCAF.REC_PERIODO
AND TRABAJADOR.CON_RUT = TRA_INPCCAF.CON_RUT
AND TRABAJADOR.CON_CORREL = TRA_INPCCAF.CON_CORREL
AND TRABAJADOR.RPR_PROCESO TRA_INPCCAF.RPR_PROCESO
AND TRABAJADOR.SUC_COD = TRA_INPCCAF.SUC_CODIGO
AND TRABAJADOR.TRA_RUT = TRA_INPCCAF.TRA_RUT
AND TRABAJADOR.NRO_COMPROBANTE TRA_INPCCAF.NRO_COMPROBANTE
AND TRABAJADOR.USU_CODIGO = TRA_INPCCAF.USU_CODIGO
INNER JOIN ENTIDAD_PREVISIONAL ON
TRA_INPCCAF.ENT_RUT = ENTIDAD_PREVISIONAL.ENT_RUT



Las tablas se relacionan de la siguiente manera:

Empresa --< Trabajador--< tra_inpccaf >--
Entidad_previsional


Debo mencinar que utilizo un cursor para obtener datos de
esta vista.

Lo más extraño es que tengo otra vista, identica a esta
(solo cambia
la tabla tra_inpccaf) y las consultas funcionan
rápidamente.

Hmm que se demore puede ser que no tengas los Join bien


puestos, porque no
envias el codigo de la vista?

Gracias


Salu2
-


-
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:
-


-


"kno" escribió en


el mensaje
news:1231901c3f58f$9f4e40a0$
Tengo una vista hecha sobre tres tablas, en total el
universo de registros es de 72000 reg. aprox. mi problema
esta en que al hacer una consulta sobre esta vista se
demora más de 30 minutos en ejecutarse. Las tablas todas
tienen indices ¿que debo revisar para que las consultas
sobre esta vista no demoren tanto?


Ipa..



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.581 / Virus Database: 368 - Release Date:


09/02/2004


.






Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.581 / Virus Database: 368 - Release Date: 10/02/2004
Respuesta Responder a este mensaje
#7 Anonimo
18/02/2004 - 16:13 | Informe spam
Sorry por no contar lo que estoy haciendo, se trata que de
estas tablas saco un documento PDF por la web, y este
documento tiene una hoja de resumen donde se especifica el
número de hojas que saldrán como detalle, el que depende
del numero de registros que hay en la tabla tra_inpccaf,
según periodo, con_rut, rut_entidad y uso (o usaba)
cursores para determinar este numero de hojas por cada uno
de estos campos.

Después de mil vueltas, ahora estoy probando agrupando la
información para calcular el numero de hojas, omitiendo el
uso de cursores, y me ha estado funcionando bien.


Sobre la vista, tienes razón, podría omitir la tabla
EMPRESA, con las otraS pasa que para relacionar la tabla
TRABAJADOR con la tabla ENTIDAD_PREVISIONAL, realizo el
join por medio de la tabla TRA_INPCCAF, y asi tener la
relacion trabajador entidad.


...Te agradesco tu tiempo


Hola, hay algo que no me cierra o te falto postiarme


codigo:

Vos en esa vista solo estas usando campos de: TRABAJDOR y
ENTIDAD_PROVICIONAL, porque haces entonces los join con


el resto de las
tablas? que sentido tiene eso si no lo estas usando ni


como campos del
Select ni en el WHERE?

Otra cosa, porque no intentas con el Query analizer y su


Asistente para
indices (seleccionando las tablas
que involucran a esta vista) ver si recomienda algun


indice.

Luego yo tambien actualizaria las Estatisticas, (Revisa


en el manual UPDATE
STATISTICS)

otro punto mas, el uso del cursor para que lo usas? que


estas buscando?
seguro que ese cursor lo podemos reemplazar por otra cosa


mucho mas efectiva


Salu2
-


-
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:
-


-


"Kno" escribió en


el mensaje
news:1283901c3f614$d91a3ca0$

Este es el código de la vista:

CREATE VIEW TRA_TRAINPCCAF_ENT
as
SELECT
TRABAJADOR.REC_PERIODO,
TRABAJADOR.CON_RUT,
TRABAJADOR.CON_CORREL,
TRABAJADOR.RPR_PROCESO,
TRABAJADOR.NRO_COMPROBANTE,
TRABAJADOR.SUC_COD,
TRABAJADOR.USU_CODIGO,
ENTIDAD_PREVISIONAL.ENT_RUT,
ENTIDAD_PREVISIONAL.ENT_TIPO,
ENTIDAD_PREVISIONAL.ENT_CODIFICACION,
TRABAJADOR.TRA_REG_SAL,
TRABAJADOR.TRA_REG_PREV
FROM EMPRESA
INNER JOIN TRABAJADOR ON
EMPRESA.REC_PERIODO = TRABAJADOR.REC_PERIODO
AND EMPRESA.CON_RUT = TRABAJADOR.CON_RUT
AND EMPRESA.CON_CORREL = TRABAJADOR.CON_CORREL
AND EMPRESA.RPR_PROCESO = TRABAJADOR.RPR_PROCESO
AND EMPRESA.NRO_COMPROBANTE >TRABAJADOR.NRO_COMPROBANTE
INNER JOIN TRA_INPCCAF ON
TRABAJADOR.REC_PERIODO = TRA_INPCCAF.REC_PERIODO
AND TRABAJADOR.CON_RUT = TRA_INPCCAF.CON_RUT
AND TRABAJADOR.CON_CORREL = TRA_INPCCAF.CON_CORREL
AND TRABAJADOR.RPR_PROCESO >TRA_INPCCAF.RPR_PROCESO
AND TRABAJADOR.SUC_COD = TRA_INPCCAF.SUC_CODIGO
AND TRABAJADOR.TRA_RUT = TRA_INPCCAF.TRA_RUT
AND TRABAJADOR.NRO_COMPROBANTE >TRA_INPCCAF.NRO_COMPROBANTE
AND TRABAJADOR.USU_CODIGO = TRA_INPCCAF.USU_CODIGO
INNER JOIN ENTIDAD_PREVISIONAL ON
TRA_INPCCAF.ENT_RUT = ENTIDAD_PREVISIONAL.ENT_RUT



Las tablas se relacionan de la siguiente manera:

Empresa --< Trabajador--< tra_inpccaf >--
Entidad_previsional


Debo mencinar que utilizo un cursor para obtener datos de
esta vista.

Lo más extraño es que tengo otra vista, identica a esta
(solo cambia
la tabla tra_inpccaf) y las consultas funcionan
rápidamente.

Hmm que se demore puede ser que no tengas los Join bien


puestos, porque no
envias el codigo de la vista?

Gracias


Salu2





-
-
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:





-
-


"kno" escribió en


el mensaje
news:1231901c3f58f$9f4e40a0$
Tengo una vista hecha sobre tres tablas, en total el
universo de registros es de 72000 reg. aprox. mi problema
esta en que al hacer una consulta sobre esta vista se
demora más de 30 minutos en ejecutarse. Las tablas todas
tienen indices ¿que debo revisar para que las consultas
sobre esta vista no demoren tanto?


Ipa..



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system




(http://www.grisoft.com).
Version: 6.0.581 / Virus Database: 368 - Release Date:


09/02/2004


.






Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.581 / Virus Database: 368 - Release Date:


10/02/2004


.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida