Consulta Lenta por condiciones del select

07/03/2005 - 15:39 por Arturo | Informe spam
Hola a Todos:

Tengo un gran Problema con una consulta. Tengo dos BD
Iguales con una semana de diferencia.porque he levantado
un Backup con otro nombre.

Tengo una Consulta con varios Inner join, como las Bds son
iguales imagine q deberian demorar lo mismo. pero en una
se demora 2 a 3 sg y en la otra 3 min.

Haciendo pruebas y descartes note que en la BD donde esta
mas lenta, cuando pongo Select * y lo demas esta normal
demora poco 3 seg...pero cuando pongo campos especificos
Select Nombre1.. demora unos 3 min..una gran diferencia.
pero no entiendo cual es el problema, si las estructuras
son iguales tanto de la sentecia como de las tablas
consultadas.

Ya no se que probar..si ha alguien le ha sucedido esto
Porfavor ayudenme..

Gracias

Arturo M.
Peru-Aqp

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
07/03/2005 - 21:17 | Informe spam
Arturo,

No sabria decirte con la poca informacion que tenemos.

Que tipo de modelo de recuperacion tiene la bd?
Como esta seteado el incremento del archivo log?
Que tipo de consultas estas realizando?


AMB


"Arturo" wrote:

Te cuento que la estructura del backup que levante hace
una semana no ha sido modificado para nada. He revisado la
estructura de cada tabla de la consulta y no he encontrado
diferencias.

Ahora que recuerdo, hace 4 días el log de la bd estaba en
3.5 GB asi es que ejecute el sp_detach_db (borre el log) y
el sp_attach_single_file_db para reducir el tamaño del
log, y desde ese día, me parece, empece a tener este
problema, crees que se deba a esto?

Saludos,
Arturo.

>Chequeastes que ambas bd tengan los mismos indices?
>
>Fijate, una semana de diferencia puede influir para que
sql server escoja
>otro plan de ejecucion. Primero deberias hacer una prueba
con bd similares.
>
>
>AMB
>
>
>"" wrote:
>
>> Estimados Alejandro y Maxi,
>>
>> Ante todo, les agradesco sobremanera la atencion
prestada.
>>
>> Siguiendo sus consejos he actualizado las estadisticas
de
>> todas las tablas que intervienen en la sentencia.
>>
>> He revisado los planes de ejecución de ambas db y he
>> encontrado diferencias, aqui les detallo una de las
lineas
>> que no coinciden y como estas hay varias.
>>
>> bd ok
>> | |--Hash Match(Left Outer Join,
HASH:
>> ([DOC].[SUCR_Codigo], [DOC].[DDCO_Item], [DOC].
>> [DOCC_NumDC], [DOC].[DOCC_Tipo])=([DSC_DOC].
>> [SUCR_CodigoDC], [DSC_DOC].[DDCO_Item], [DSC_DOC].
>> [DOCC_NumDC], [DSC_DOC].[DOCC_Tipo]), RESIDUAL:((([DOC].
[
>>
>> bd con problemas
>> | |--Nested Loops(Left Outer Join)
>>
>> Saludos cordiales,
>> Arturo.
>>
>> >Arturo,
>> >
>> >Por lo pronto chequeate el plan de ejecicion escogido
por
>> sql server cuando
>> >ejecutas la sentencia en ambas bd. Tambien recuerda
>> actualizar las
>> >estadisticas en ambas bd, usando sp_updatestats, antes
de
>> ejecutar la
>> >sentencia.
>> >
>> >set showplan_text on
>> >go
>> >
>> >select ...
>> >go
>> >
>> >set showplan_text off
>> >go
>> >
>> >
>> >Luego nos cuentas.
>> >
>> >
>> >AMB
>> >"Arturo" wrote:
>> >
>> >> Hola a Todos:
>> >>
>> >> Tengo un gran Problema con una consulta. Tengo dos
BD
>> >> Iguales con una semana de diferencia.porque he
>> levantado
>> >> un Backup con otro nombre.
>> >>
>> >> Tengo una Consulta con varios Inner join, como las
Bds
>> son
>> >> iguales imagine q deberian demorar lo mismo. pero en
>> una
>> >> se demora 2 a 3 sg y en la otra 3 min.
>> >>
>> >> Haciendo pruebas y descartes note que en la BD donde
>> esta
>> >> mas lenta, cuando pongo Select * y lo demas esta
normal
>> >> demora poco 3 seg...pero cuando pongo campos
>> especificos
>> >> Select Nombre1.. demora unos 3 min..una gran
>> diferencia.
>> >> pero no entiendo cual es el problema, si las
>> estructuras
>> >> son iguales tanto de la sentecia como de las tablas
>> >> consultadas.
>> >>
>> >> Ya no se que probar..si ha alguien le ha sucedido
esto
>> >> Porfavor ayudenme..
>> >>
>> >> Gracias
>> >>
>> >> Arturo M.
>> >> Peru-Aqp
>> >>
>> >.
>> >
>>
>.
>

Respuesta Responder a este mensaje
#7 Arturo Mollo
07/03/2005 - 22:42 | Informe spam
Hola Maxi,

Gracias por tu pronta respuesta.

He actualizado las estadisticas de las tablas de la
consulta.
Tambien he revisado el plan de ejecucion y aqui si he
encontrado diferencias entre una y otra bd.
Las estructuras de las tablas de mi query son identicas en
ambas bd, lo unico que hice hace unos 4 dias atras fue
correr el sp_detach_db (para borrar el log que habia
crecido hasta 3.5 GB) y luego el sp_attach_single_file_db,
desde entonces es que tengo estos problemas.

Ya no se que mas hacer, quedo a la espera de tus
sugerencias.

Saludos,
Arturo.


Hola, pues deberiamos ver los planes de ejecucion quizas


no se esten usando
indices.

Has probado actualizar las estadisticas?

Otro tema, me imagino que los JOIN si son muchos


registros los has hecho con
consultas derivadas no?


Salu2
Maxi


"Arturo" escribió


en el mensaje
news:539401c52323$888b3860$
Hola a Todos:

Tengo un gran Problema con una consulta. Tengo dos BD
Iguales con una semana de diferencia.porque he levantado
un Backup con otro nombre.

Tengo una Consulta con varios Inner join, como las Bds




son
iguales imagine q deberian demorar lo mismo. pero en una
se demora 2 a 3 sg y en la otra 3 min.

Haciendo pruebas y descartes note que en la BD donde




esta
mas lenta, cuando pongo Select * y lo demas esta normal
demora poco 3 seg...pero cuando pongo campos especificos
Select Nombre1.. demora unos 3 min..una gran




diferencia.
pero no entiendo cual es el problema, si las estructuras
son iguales tanto de la sentecia como de las tablas
consultadas.

Ya no se que probar..si ha alguien le ha sucedido esto
Porfavor ayudenme..

Gracias

Arturo M.
Peru-Aqp




.

Respuesta Responder a este mensaje
#8 Arturo
07/03/2005 - 23:35 | Informe spam
Alejandro,

Espero que te ayude el exponerte la consulta.
La bd tiene tipo Full Recovery y el log esta seteado al
10% de crecimiento sin limite.
Sabes, hay algo curioso y que me tiene intrigado, cuando
ejecuto esta consulta con "select *" demora 4 seg. pero
cuando especifico cualquier columna en el select demora +
de 2 min.

SELECT DISTINCT
RIGHT('0000000000' + CONVERT(VARCHAR(10),
COC.DOCC_NUMDC), 10) AS [Orden Compra],
DOC.DDCO_ITEM as Item,
ISNULL(DOC.TIPO_TABARS, C.TIPO_TabArea) as TabArea,
ISNULL(DOC.TIPO_CODARS, C.TIPO_CodArea) as CodArea,
RIGHT('0000000000' + CONVERT(VARCHAR(10),
C.SOLC_NumSC), 10) as Solicitud,
ISNULL(AOC.TIPO_DescC, ASS.TIPO_DescC) as [Area
General], U.USER_Nombre as
Solicitante,
DOC.TIPO_CodServicio as [Cod. Serv.], S.TIPO_Desc1
as Servicio,
DOC.DDCO_CANT1, DOC.DDCO_PRECIO1,
DOC.DDCO_CANTANULADA, P.ENTC_RAZONSOC as
Proveedor,
COC.DOCC_FecEnt as [Fec. Entrega], MND.TIPO_DESCC
as Moneda, COC.DOCC_GLOSA AS Glosa
FROM
dbo.Tipos S RIGHT OUTER JOIN
dbo.DocCompra COC INNER JOIN
dbo.DetDocCompra DOC ON COC.SUCR_Codigo DOC.SUCR_Codigo AND COC.DOCC_NumDC =
DOC.DOCC_NumDC AND
COC.DOCC_Tipo = DOC.DOCC_Tipo LEFT OUTER JOIN
dbo.Tipos MND ON COC.TIPO_TabMoneda MND.TIPO_CodTabla AND COC.TIPO_CodMoneda =
MND.TIPO_CodTipo LEFT OUTER JOIN
dbo.EntComercial P ON COC.ENTC_Codigo =
P.ENTC_Codigo
LEFT OUTER JOIN
dbo.Tipos TC ON COC.TIPO_TabTipoCompra TC.TIPO_CodTabla AND COC.TIPO_CodTipoCompra =
TC.TIPO_CodTipo ON
S.TIPO_CodTabla = DOC.TIPO_TabServicio AND
S.TIPO_CodTipo = DOC.TIPO_CodServicio LEFT OUTER
JOIN
dbo.Tipos AOC ON DOC.TIPO_TabARS =
AOC.TIPO_CodTabla
AND DOC.TIPO_CodARS = AOC.TIPO_CodTipo LEFT OUTER
JOIN
dbo.Tipos ASS RIGHT OUTER JOIN
dbo.SolCompra C INNER JOIN
dbo.DetSolCompra D ON C.SOLC_NumSC = D.SOLC_NumSC
AND
C.SUCR_Codigo = D.SUCR_Codigo AND C.TIPO_TabArea =
D.TIPO_TabArea AND
C.TIPO_CodArea = D.TIPO_CodArea INNER JOIN
dbo.DetSolCompraxDetDocCompra DSC_DOC ON
D.SOLC_NumSC
= DSC_DOC.SOLC_NumSC AND D.SUCR_Codigo =
DSC_DOC.SUCR_Codigo AND
D.TIPO_TabArea = DSC_DOC.TIPO_TabArea AND
D.TIPO_CodArea = DSC_DOC.TIPO_CodArea AND
D.DSCO_Item = DSC_DOC.DSCO_Item ON
ASS.TIPO_CodTabla = D.TIPO_TabArea AND
ASS.TIPO_CodTipo = D.TIPO_CodArea ON
DOC.SUCR_Codigo = DSC_DOC.SUCR_CodigoDC
AND
DOC.DOCC_Tipo = DSC_DOC.DOCC_Tipo AND
DOC.DOCC_NumDC DSC_DOC.DOCC_NumDC AND
DOC.DDCO_Item = DSC_DOC.DDCO_Item LEFT OUTER JOIN
dbo.Usuarios U ON C.USER_IdUserSol = U.USER_IdUser
WHERE
COC.SUCR_Codigo = '00' AND
COC.DOCC_FECEMI BETWEEN convert
(datetime, '2005/01/01') AND
convert(datetime, '2005/03/07')
AND ISNULL(C.SOLC_TipoDetalle, 'S') = 'S'
AND COC.DOCC_ESTADO IN ('C','A')
AND ISNULL(DOC.DDCO_APROBADO, 0) = 0
AND DOC.DDCO_ARCO = 1
AND ISNULL(DOC.DDCO_Provisionado, 0) = 0
AND COC.DOCC_TIPO = 'OC'
go

Saludos y gracias.
Arturo.

Arturo,

No sabria decirte con la poca informacion que tenemos.

Que tipo de modelo de recuperacion tiene la bd?
Como esta seteado el incremento del archivo log?
Que tipo de consultas estas realizando?


AMB


"Arturo" wrote:

Te cuento que la estructura del backup que levante hace
una semana no ha sido modificado para nada. He revisado




la
estructura de cada tabla de la consulta y no he




encontrado
diferencias.

Ahora que recuerdo, hace 4 dà­as el log de la bd estaba




en
3.5 GB asi es que ejecute el sp_detach_db (borre el




log) y
el sp_attach_single_file_db para reducir el tamaà±o del
log, y desde ese dà­a, me parece, empece a tener este
problema, crees que se deba a esto?

Saludos,
Arturo.

>Chequeastes que ambas bd tengan los mismos indices?
>
>Fijate, una semana de diferencia puede influir para




que
sql server escoja
>otro plan de ejecucion. Primero deberias hacer una




prueba
con bd similares.
>
>
>AMB
>
>
>"" wrote:
>
>> Estimados Alejandro y Maxi,
>>
>> Ante todo, les agradesco sobremanera la atencion
prestada.
>>
>> Siguiendo sus consejos he actualizado las




estadisticas
de
>> todas las tablas que intervienen en la sentencia.
>>
>> He revisado los planes de ejecuciàf³n de ambas db y




he
>> encontrado diferencias, aqui les detallo una de las
lineas
>> que no coinciden y como estas hay varias.
>>
>> bd ok
>> | |--Hash Match(Left Outer Join,
HASH:
>> ([DOC].[SUCR_Codigo], [DOC].[DDCO_Item], [DOC].
>> [DOCC_NumDC], [DOC].[DOCC_Tipo])=([DSC_DOC].
>> [SUCR_CodigoDC], [DSC_DOC].[DDCO_Item], [DSC_DOC].
>> [DOCC_NumDC], [DSC_DOC].[DOCC_Tipo]), RESIDUAL:




((([DOC].
[
>>
>> bd con problemas
>> | |--Nested Loops(Left Outer




Join)
>>
>> Saludos cordiales,
>> Arturo.
>>
>> >Arturo,
>> >
>> >Por lo pronto chequeate el plan de ejecicion




escogido
por
>> sql server cuando
>> >ejecutas la sentencia en ambas bd. Tambien recuerda
>> actualizar las
>> >estadisticas en ambas bd, usando sp_updatestats,




antes
de
>> ejecutar la
>> >sentencia.
>> >
>> >set showplan_text on
>> >go
>> >
>> >select ...
>> >go
>> >
>> >set showplan_text off
>> >go
>> >
>> >
>> >Luego nos cuentas.
>> >
>> >
>> >AMB
>> >"Arturo" wrote:
>> >
>> >> Hola a Todos:
>> >>
>> >> Tengo un gran Problema con una consulta. Tengo




dos
BD
>> >> Iguales con una semana de diferencia.porque he
>> levantado
>> >> un Backup con otro nombre.
>> >>
>> >> Tengo una Consulta con varios Inner join, como




las
Bds
>> son
>> >> iguales imagine q deberian demorar lo mismo. pero




en
>> una
>> >> se demora 2 a 3 sg y en la otra 3 min.
>> >>
>> >> Haciendo pruebas y descartes note que en la BD




donde
>> esta
>> >> mas lenta, cuando pongo Select * y lo demas esta
normal
>> >> demora poco 3 seg...pero cuando pongo campos
>> especificos
>> >> Select Nombre1.. demora unos 3 min..una gran
>> diferencia.
>> >> pero no entiendo cual es el problema, si las
>> estructuras
>> >> son iguales tanto de la sentecia como de las




tablas
>> >> consultadas.
>> >>
>> >> Ya no se que probar..si ha alguien le ha sucedido
esto
>> >> Porfavor ayudenme..
>> >>
>> >> Gracias
>> >>
>> >> Arturo M.
>> >> Peru-Aqp
>> >>
>> >.
>> >
>>
>.
>



.

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