Diferecia de rendimiento en el analizador de consultas y un procedimiento almacenado.

19/09/2005 - 10:24 por José Antonio | Informe spam
Hola, tengo unas consultas que funcionan correctamente en el analizador de
consultas, sin embargo cuando las añado a la base de datos en un
procedimiento almacenado, van mucho mas lentas.

Los planes de ejecución son diferentes tambien en el analizador de consultas
si ejecuto directamente el codigo del procedemiento que si llamo el
procedimiento con exe y los parametros, ademas de la diferencia en los
planes de ejecución, en los planes de ejecucion de llamada al procedimiento
con exec, los iconos tienen todos un circulo amarillo con unas flechas en
medio y aparacen uncos icnos de paralelismo que no habias visto nunca.

Estas son las llamadas que hago.

SET STATISTICS IO ON

DECLARE @CLIENTE VARCHAR(10)
SET @CLIENTE='4300000486'

// Esta es la llamada directa que va lenta.

EXEC DR_ELEPENCLIACU @CLIENTE

//Esta es la llamadirecta y el contenido del procedimiento almacenado es
identico.

SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='M' AND
L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN ('L','S','F','M','H')
GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON MU.REFERENCIA=P.CODIGO LEFT JOIN MAQUINA M ON
M.CODIGO=MU.CODIGO

SELECT P.CODIGO,MEDIO.NOMBRE,P.ALQUILADO,P.DEVUELTO,P.PENDIENTE FROM
(SELECT L.CODIGO,SUM(CANTIDAD) AS ALQUILADO,SUM(CANTIDEVO) AS
DEVUELTO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='A' AND
L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN ('L','S','F','M','H')
GROUP BY L.CODIGO) P
LEFT JOIN MEDIO ON MEDIO.CODIGO=P.CODIGO

SELECT P.CODIGO,SERVICIO.NOMBRE,P.ALQUILADO,P.DEVUELTO,P.PENDIENTE FROM
(SELECT L.CODIGO,SUM(CANTIDAD) AS ALQUILADO,SUM(CANTIDEVO) AS
DEVUELTO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='S' AND
L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN ('L','S','F','M','H')
GROUP BY L.CODIGO) P
LEFT JOIN SERVICIO ON SERVICIO.CODIGO=P.CODIGO
UNION ALL
SELECT L.CODIGO,L.TEXTO,CANTIDAD AS ALQUILADO,CANTIDEVO AS
DEVUELTO,PENDIDEVO AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='T' AND
L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN ('L','S','F','M','H')


Estos son los resultados del STATISTICS IO:

//La llamada al procedimiento almacenado:
Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas 7642,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUIUNI'. Número de exploraciones 2, lecturas lógicas 16, lecturas
físicas 0, lecturas anticipadas 0.
Tabla 'MAQUINA'. Número de exploraciones 10, lecturas lógicas 20, lecturas
físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas 7642,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MEDIO'. Número de exploraciones 10, lecturas lógicas 20, lecturas
físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 4, lecturas lógicas 15284,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MEDIO'. Número de exploraciones 0, lecturas lógicas 0, lecturas
físicas 0, lecturas anticipadas 0.

//La ejecucion directa de la sentencia

Tabla 'MAQUINA'. Número de exploraciones 10, lecturas lógicas 20, lecturas
físicas 0, lecturas anticipadas 0.
Tabla 'MAQUIUNI'. Número de exploraciones 10, lecturas lógicas 20, lecturas
físicas 0, lecturas anticipadas 0.
Tabla 'LICONTRATO'. Número de exploraciones 1, lecturas lógicas 65, lecturas
físicas 0, lecturas anticipadas 0.

Tabla 'MEDIO'. Número de exploraciones 10, lecturas lógicas 20, lecturas
físicas 0, lecturas anticipadas 0.
Tabla 'LICONTRATO'. Número de exploraciones 1, lecturas lógicas 149,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas 107,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'SERVICIO'. Número de exploraciones 0, lecturas lógicas 0, lecturas
físicas 0, lecturas anticipadas 0.


Sabeis alguien que puede estar pasando?, todo esto es en el mismor servidor
y la misma base de datos.


Saludos.

Preguntas similare

Leer las respuestas

#6 Jose Antonio
21/09/2005 - 11:40 | Informe spam
Ya he localizado como era, estos son los resultados.


StmtText

SET STATISTICS PROFILE ON

(1 filas afectadas)

StmtText
-
exec DR_PRUEBA '4300000486'
CREATE PROCEDURE DR_PRUEBA

@CLIENTE AS VARCHAR(10)
AS
SET NOCOUNT ON
SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='M' AND
L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN ('L','S','F','M','H')
GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON M

(3 filas afectadas)

StmtText
-
|--Parallelism(Gather Streams, ORDER BY:([MU].[CODIGO] ASC))
|--Sort(ORDER BY:([MU].[CODIGO] ASC))
|--Nested Loops(Left Outer Join, OUTER
REFERENCES:([MU].[CODIGO]))
|--Hash Match(Left Outer Join,
HASH:([L].[CODIGO])=([MU].[REFERENCIA]),
RESIDUAL:([MU].[REFERENCIA]=[L].[CODIGO]))
| |--Bitmap(HASH:([L].[CODIGO]),
DEFINE:([Bitmap1011]))
| | |--Compute Scalar(DEFINE:([Expr1001]=If
([Expr1009]=0) then NULL else [Expr1010]))
| | |--Stream Aggregate(GROUP
BY:([L].[CODIGO]) DEFINE:([Expr1009]=COUNT_BIG([L].[PENDIDEVO]),
[Expr1010]=SUM([L].[PENDIDEVO])))
| | |--Sort(ORDER BY:([L].[CODIGO]
ASC))
| | |--Parallelism(Repartition
Streams, PARTITION COLUMNS:([L].[CODIGO]))
| |
|--Filter(WHERE:([L].[DEVUELTO]='N'))
| | |--Compute
Scalar(DEFINE:([L].[DEVUELTO]=If
(LICONTRATO.[CANTIDAD]-LICONTRATO.[CANTIDEVO]>Convert(0)) then 'N' else 'S',
[L].[PENDIDEVO]=LICONTRATO.[CANTIDAD]-LICONTRATO.[CANTIDEVO]))
| | |--Clustered
Index Scan(OBJECT:([ALQUISYS].[dbo].[LICONTRATO].[PK_LICONTRATO] AS [L]),
WHERE:(([L].[TIPO]='M' AND [L].[CLIENTE]=[@CLIENTE]) AND
(((([L].[TIPOFAC]='H' OR [L].[TIPOFAC]='M') OR [L]
| |--Parallelism(Repartition Streams, PARTITION
COLUMNS:([MU].[REFERENCIA]), WHERE:(PROBE([Bitmap1011])=TRUE))
| |--Compute
Scalar(DEFINE:([MU].[REFERENCIA]=[MU].[CODIGO]+MAQUIUNI.[NUMERO]))
| |--Index
Scan(OBJECT:([ALQUISYS].[dbo].[MAQUIUNI].[IX_MAQUIUNI] AS [MU]))
|--Index
Seek(OBJECT:([ALQUISYS].[dbo].[MAQUINA].[MAQUINA43] AS [M]),
SEEK:([M].[CODIGO]=[MU].[CODIGO]) ORDERED FORWARD)

(16 filas afectadas)

StmtText
-

SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT L.CODIGO,SUM(PENDIDEVO)
AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='M' AND L.DEVUELTO='N' AND
CLIENTE='4300000486' AND L.TIPOFAC IN ('L','S','F','M','H') GROUP BY
L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON MU

(1 filas afectadas)

StmtText
-
|--Nested Loops(Left Outer Join, OUTER REFERENCES:([MU].[CODIGO]))
|--Sort(ORDER BY:([MU].[CODIGO] ASC))
| |--Nested Loops(Left Outer Join, OUTER REFERENCES:([L].[CODIGO])
WITH PREFETCH)
| |--Compute Scalar(DEFINE:([Expr1001]=If ([Expr1011]=0) then
NULL else [Expr1012]))
| | |--Stream Aggregate(GROUP BY:([L].[CODIGO])
DEFINE:([Expr1011]=COUNT_BIG([L].[PENDIDEVO]),
[Expr1012]=SUM([L].[PENDIDEVO])))
| | |--Sort(ORDER BY:([L].[CODIGO] ASC))
| | |--Index
Seek(OBJECT:([ALQUISYS].[dbo].[LICONTRATO].[LICONTRATO2424] AS [L]),
SEEK:([L].[CLIENTE]='4300000486' AND [L].[TIPO]='M' AND [L].[TIPOFAC]='F'
AND [L].[DEVUELTO]='N' OR [L].[CLIENTE]='4300000486' AND [L].[TIPO]='M'
| |--Index
Seek(OBJECT:([ALQUISYS].[dbo].[MAQUIUNI].[MAQUIUNI107] AS [MU]),
SEEK:([MU].[REFERENCIA]=[L].[CODIGO]) ORDERED FORWARD)
|--Index Seek(OBJECT:([ALQUISYS].[dbo].[MAQUINA].[MAQUINA43] AS [M]),
SEEK:([M].[CODIGO]=[MU].[CODIGO]) ORDERED FORWARD)

(9 filas afectadas)

StmtText
SET STATISTICS PROFILE OFF

(1 filas afectadas)





"Maxi" escribió en el mensaje
news:%
Hola, a ver, solo deja un solo query en el SP y compilalo. Luego ejecutalo
y mostrame el plan de ejecucion (pasamelo en formato texto) al igual que
el mismo query fuera del Sp's (armate un archivo .txt para la data)

Tenes alguna maquina con sp3a?


Salu2
Maxi


"José Antonio" escribió en el
mensaje news:
Tengo instalado el servipack 4, y creo que si estan actualizadas las
estadisticas.

En todo caso ¿como las actualizaria? para probar si es ese el problema.

voy a probar a separar los querys y te digo que es lo que pasa.


"Maxi" escribió en el mensaje
news:eZG2q$
Hola, que vsersion de service pack tienes? y ademas, las estadisticas
las tienes actualizadas?

El sp's tiene los 3 querys juntos? podes probar de separarlos uno por
sp?


-

"José Antonio" escribió en el
mensaje news:
Hola, tengo unas consultas que funcionan correctamente en el analizador
de consultas, sin embargo cuando las añado a la base de datos en un
procedimiento almacenado, van mucho mas lentas.

Los planes de ejecución son diferentes tambien en el analizador de
consultas si ejecuto directamente el codigo del procedemiento que si
llamo el procedimiento con exe y los parametros, ademas de la
diferencia en los planes de ejecución, en los planes de ejecucion de
llamada al procedimiento con exec, los iconos tienen todos un circulo
amarillo con unas flechas en medio y aparacen uncos icnos de
paralelismo que no habias visto nunca.

Estas son las llamadas que hago.

SET STATISTICS IO ON

DECLARE @CLIENTE VARCHAR(10)
SET @CLIENTE='4300000486'

// Esta es la llamada directa que va lenta.

EXEC DR_ELEPENCLIACU @CLIENTE

//Esta es la llamadirecta y el contenido del procedimiento almacenado
es identico.

SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='M'
AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON MU.REFERENCIA=P.CODIGO LEFT JOIN MAQUINA M
ON M.CODIGO=MU.CODIGO

SELECT P.CODIGO,MEDIO.NOMBRE,P.ALQUILADO,P.DEVUELTO,P.PENDIENTE FROM
(SELECT L.CODIGO,SUM(CANTIDAD) AS ALQUILADO,SUM(CANTIDEVO) AS
DEVUELTO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='A'
AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MEDIO ON MEDIO.CODIGO=P.CODIGO

SELECT P.CODIGO,SERVICIO.NOMBRE,P.ALQUILADO,P.DEVUELTO,P.PENDIENTE
FROM (SELECT L.CODIGO,SUM(CANTIDAD) AS ALQUILADO,SUM(CANTIDEVO) AS
DEVUELTO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='S'
AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN SERVICIO ON SERVICIO.CODIGO=P.CODIGO
UNION ALL
SELECT L.CODIGO,L.TEXTO,CANTIDAD AS ALQUILADO,CANTIDEVO AS
DEVUELTO,PENDIDEVO AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='T' AND
L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H')


Estos son los resultados del STATISTICS IO:

//La llamada al procedimiento almacenado:
Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas 7642,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUIUNI'. Número de exploraciones 2, lecturas lógicas 16,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUINA'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas 7642,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MEDIO'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 4, lecturas lógicas 15284,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MEDIO'. Número de exploraciones 0, lecturas lógicas 0, lecturas
físicas 0, lecturas anticipadas 0.

//La ejecucion directa de la sentencia

Tabla 'MAQUINA'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUIUNI'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'LICONTRATO'. Número de exploraciones 1, lecturas lógicas 65,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'MEDIO'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'LICONTRATO'. Número de exploraciones 1, lecturas lógicas 149,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas 107,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'SERVICIO'. Número de exploraciones 0, lecturas lógicas 0,
lecturas físicas 0, lecturas anticipadas 0.


Sabeis alguien que puede estar pasando?, todo esto es en el mismor
servidor y la misma base de datos.


Saludos.














Respuesta Responder a este mensaje
#7 Maxi
21/09/2005 - 14:42 | Informe spam
Hola, te hago una pregunta!! tenes mas de un procesador en ese servidor? me
podrias ademas decir los resultados de la siguiente intruccion

Select Serverproperty('ProductLevel')



Salu2
Maxi


"Jose Antonio" escribió en el mensaje
news:e3eQq$
Ya he localizado como era, estos son los resultados.


StmtText

SET STATISTICS PROFILE ON

(1 filas afectadas)

StmtText
-
exec DR_PRUEBA '4300000486'
CREATE PROCEDURE DR_PRUEBA

@CLIENTE AS VARCHAR(10)
AS
SET NOCOUNT ON
SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='M'
AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON M

(3 filas afectadas)

StmtText
-
|--Parallelism(Gather Streams, ORDER BY:([MU].[CODIGO] ASC))
|--Sort(ORDER BY:([MU].[CODIGO] ASC))
|--Nested Loops(Left Outer Join, OUTER
REFERENCES:([MU].[CODIGO]))
|--Hash Match(Left Outer Join,
HASH:([L].[CODIGO])=([MU].[REFERENCIA]),
RESIDUAL:([MU].[REFERENCIA]=[L].[CODIGO]))
| |--Bitmap(HASH:([L].[CODIGO]),
DEFINE:([Bitmap1011]))
| | |--Compute Scalar(DEFINE:([Expr1001]=If
([Expr1009]=0) then NULL else [Expr1010]))
| | |--Stream Aggregate(GROUP
BY:([L].[CODIGO]) DEFINE:([Expr1009]=COUNT_BIG([L].[PENDIDEVO]),
[Expr1010]=SUM([L].[PENDIDEVO])))
| | |--Sort(ORDER BY:([L].[CODIGO]
ASC))
| | |--Parallelism(Repartition
Streams, PARTITION COLUMNS:([L].[CODIGO]))
| | |--Filter(WHERE:([L].[DEVUELTO]='N'))
| | |--Compute
Scalar(DEFINE:([L].[DEVUELTO]=If
(LICONTRATO.[CANTIDAD]-LICONTRATO.[CANTIDEVO]>Convert(0)) then 'N' else
'S', [L].[PENDIDEVO]=LICONTRATO.[CANTIDAD]-LICONTRATO.[CANTIDEVO]))
| | |--Clustered
Index Scan(OBJECT:([ALQUISYS].[dbo].[LICONTRATO].[PK_LICONTRATO] AS [L]),
WHERE:(([L].[TIPO]='M' AND [L].[CLIENTE]=[@CLIENTE]) AND
(((([L].[TIPOFAC]='H' OR [L].[TIPOFAC]='M') OR [L]
| |--Parallelism(Repartition Streams, PARTITION
COLUMNS:([MU].[REFERENCIA]), WHERE:(PROBE([Bitmap1011])=TRUE))
| |--Compute
Scalar(DEFINE:([MU].[REFERENCIA]=[MU].[CODIGO]+MAQUIUNI.[NUMERO]))
| |--Index
Scan(OBJECT:([ALQUISYS].[dbo].[MAQUIUNI].[IX_MAQUIUNI] AS [MU]))
|--Index
Seek(OBJECT:([ALQUISYS].[dbo].[MAQUINA].[MAQUINA43] AS [M]),
SEEK:([M].[CODIGO]=[MU].[CODIGO]) ORDERED FORWARD)

(16 filas afectadas)

StmtText
-

SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT L.CODIGO,SUM(PENDIDEVO)
AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='M' AND L.DEVUELTO='N' AND
CLIENTE='4300000486' AND L.TIPOFAC IN ('L','S','F','M','H') GROUP BY
L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON MU

(1 filas afectadas)

StmtText
-
|--Nested Loops(Left Outer Join, OUTER REFERENCES:([MU].[CODIGO]))
|--Sort(ORDER BY:([MU].[CODIGO] ASC))
| |--Nested Loops(Left Outer Join, OUTER
REFERENCES:([L].[CODIGO]) WITH PREFETCH)
| |--Compute Scalar(DEFINE:([Expr1001]=If ([Expr1011]=0)
then NULL else [Expr1012]))
| | |--Stream Aggregate(GROUP BY:([L].[CODIGO])
DEFINE:([Expr1011]=COUNT_BIG([L].[PENDIDEVO]),
[Expr1012]=SUM([L].[PENDIDEVO])))
| | |--Sort(ORDER BY:([L].[CODIGO] ASC))
| | |--Index
Seek(OBJECT:([ALQUISYS].[dbo].[LICONTRATO].[LICONTRATO2424] AS [L]),
SEEK:([L].[CLIENTE]='4300000486' AND [L].[TIPO]='M' AND [L].[TIPOFAC]='F'
AND [L].[DEVUELTO]='N' OR [L].[CLIENTE]='4300000486' AND [L].[TIPO]='M'
| |--Index
Seek(OBJECT:([ALQUISYS].[dbo].[MAQUIUNI].[MAQUIUNI107] AS [MU]),
SEEK:([MU].[REFERENCIA]=[L].[CODIGO]) ORDERED FORWARD)
|--Index Seek(OBJECT:([ALQUISYS].[dbo].[MAQUINA].[MAQUINA43] AS
[M]), SEEK:([M].[CODIGO]=[MU].[CODIGO]) ORDERED FORWARD)

(9 filas afectadas)

StmtText
SET STATISTICS PROFILE OFF

(1 filas afectadas)





"Maxi" escribió en el mensaje
news:%
Hola, a ver, solo deja un solo query en el SP y compilalo. Luego
ejecutalo y mostrame el plan de ejecucion (pasamelo en formato texto) al
igual que el mismo query fuera del Sp's (armate un archivo .txt para la
data)

Tenes alguna maquina con sp3a?


Salu2
Maxi


"José Antonio" escribió en el
mensaje news:
Tengo instalado el servipack 4, y creo que si estan actualizadas las
estadisticas.

En todo caso ¿como las actualizaria? para probar si es ese el problema.

voy a probar a separar los querys y te digo que es lo que pasa.


"Maxi" escribió en el mensaje
news:eZG2q$
Hola, que vsersion de service pack tienes? y ademas, las estadisticas
las tienes actualizadas?

El sp's tiene los 3 querys juntos? podes probar de separarlos uno por
sp?


-

"José Antonio" escribió en el
mensaje news:
Hola, tengo unas consultas que funcionan correctamente en el
analizador de consultas, sin embargo cuando las añado a la base de
datos en un procedimiento almacenado, van mucho mas lentas.

Los planes de ejecución son diferentes tambien en el analizador de
consultas si ejecuto directamente el codigo del procedemiento que si
llamo el procedimiento con exe y los parametros, ademas de la
diferencia en los planes de ejecución, en los planes de ejecucion de
llamada al procedimiento con exec, los iconos tienen todos un circulo
amarillo con unas flechas en medio y aparacen uncos icnos de
paralelismo que no habias visto nunca.

Estas son las llamadas que hago.

SET STATISTICS IO ON

DECLARE @CLIENTE VARCHAR(10)
SET @CLIENTE='4300000486'

// Esta es la llamada directa que va lenta.

EXEC DR_ELEPENCLIACU @CLIENTE

//Esta es la llamadirecta y el contenido del procedimiento almacenado
es identico.

SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE
L.TIPO='M' AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON MU.REFERENCIA=P.CODIGO LEFT JOIN MAQUINA M
ON M.CODIGO=MU.CODIGO

SELECT P.CODIGO,MEDIO.NOMBRE,P.ALQUILADO,P.DEVUELTO,P.PENDIENTE FROM
(SELECT L.CODIGO,SUM(CANTIDAD) AS ALQUILADO,SUM(CANTIDEVO) AS
DEVUELTO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE
L.TIPO='A' AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MEDIO ON MEDIO.CODIGO=P.CODIGO

SELECT P.CODIGO,SERVICIO.NOMBRE,P.ALQUILADO,P.DEVUELTO,P.PENDIENTE
FROM (SELECT L.CODIGO,SUM(CANTIDAD) AS ALQUILADO,SUM(CANTIDEVO) AS
DEVUELTO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE
L.TIPO='S' AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN SERVICIO ON SERVICIO.CODIGO=P.CODIGO
UNION ALL
SELECT L.CODIGO,L.TEXTO,CANTIDAD AS ALQUILADO,CANTIDEVO AS
DEVUELTO,PENDIDEVO AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='T' AND
L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H')


Estos son los resultados del STATISTICS IO:

//La llamada al procedimiento almacenado:
Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas 7642,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUIUNI'. Número de exploraciones 2, lecturas lógicas 16,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUINA'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas 7642,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MEDIO'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 4, lecturas lógicas 15284,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MEDIO'. Número de exploraciones 0, lecturas lógicas 0, lecturas
físicas 0, lecturas anticipadas 0.

//La ejecucion directa de la sentencia

Tabla 'MAQUINA'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUIUNI'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'LICONTRATO'. Número de exploraciones 1, lecturas lógicas 65,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'MEDIO'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'LICONTRATO'. Número de exploraciones 1, lecturas lógicas 149,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas 107,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'SERVICIO'. Número de exploraciones 0, lecturas lógicas 0,
lecturas físicas 0, lecturas anticipadas 0.


Sabeis alguien que puede estar pasando?, todo esto es en el mismor
servidor y la misma base de datos.


Saludos.


















Respuesta Responder a este mensaje
#8 Jose Antonio
21/09/2005 - 21:39 | Informe spam
El resultado del select property es en un servidor SP3, y ahora tengo que
probar en el otro que tiene servipack 4,
tengo el mismo fallo en los dos servidores (he copiado la base de datos y
esta identica en ambos).

El servidor que tiene SP3 es un Pentium 4 con 1 Gb de memoria y el que
tengo con SP4 es un doble pentiumIII con 2 Gb de memoria, la base de datos
es pequeña tienen 2 Gb aproximadamente.

Saludos.
"Maxi" escribió en el mensaje
news:%
Hola, te hago una pregunta!! tenes mas de un procesador en ese servidor?
me podrias ademas decir los resultados de la siguiente intruccion

Select Serverproperty('ProductLevel')



Salu2
Maxi


"Jose Antonio" escribió en el mensaje
news:e3eQq$
Ya he localizado como era, estos son los resultados.


StmtText

SET STATISTICS PROFILE ON

(1 filas afectadas)

StmtText
-
exec DR_PRUEBA '4300000486'
CREATE PROCEDURE DR_PRUEBA

@CLIENTE AS VARCHAR(10)
AS
SET NOCOUNT ON
SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='M'
AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON M

(3 filas afectadas)

StmtText
-
|--Parallelism(Gather Streams, ORDER BY:([MU].[CODIGO] ASC))
|--Sort(ORDER BY:([MU].[CODIGO] ASC))
|--Nested Loops(Left Outer Join, OUTER
REFERENCES:([MU].[CODIGO]))
|--Hash Match(Left Outer Join,
HASH:([L].[CODIGO])=([MU].[REFERENCIA]),
RESIDUAL:([MU].[REFERENCIA]=[L].[CODIGO]))
| |--Bitmap(HASH:([L].[CODIGO]),
DEFINE:([Bitmap1011]))
| | |--Compute Scalar(DEFINE:([Expr1001]=If
([Expr1009]=0) then NULL else [Expr1010]))
| | |--Stream Aggregate(GROUP
BY:([L].[CODIGO]) DEFINE:([Expr1009]=COUNT_BIG([L].[PENDIDEVO]),
[Expr1010]=SUM([L].[PENDIDEVO])))
| | |--Sort(ORDER BY:([L].[CODIGO]
ASC))
| | |--Parallelism(Repartition
Streams, PARTITION COLUMNS:([L].[CODIGO]))
| | |--Filter(WHERE:([L].[DEVUELTO]='N'))
| | |--Compute
Scalar(DEFINE:([L].[DEVUELTO]=If
(LICONTRATO.[CANTIDAD]-LICONTRATO.[CANTIDEVO]>Convert(0)) then 'N' else
'S', [L].[PENDIDEVO]=LICONTRATO.[CANTIDAD]-LICONTRATO.[CANTIDEVO]))
| | |--Clustered
Index Scan(OBJECT:([ALQUISYS].[dbo].[LICONTRATO].[PK_LICONTRATO] AS [L]),
WHERE:(([L].[TIPO]='M' AND [L].[CLIENTE]=[@CLIENTE]) AND
(((([L].[TIPOFAC]='H' OR [L].[TIPOFAC]='M') OR [L]
| |--Parallelism(Repartition Streams, PARTITION
COLUMNS:([MU].[REFERENCIA]), WHERE:(PROBE([Bitmap1011])=TRUE))
| |--Compute
Scalar(DEFINE:([MU].[REFERENCIA]=[MU].[CODIGO]+MAQUIUNI.[NUMERO]))
| |--Index
Scan(OBJECT:([ALQUISYS].[dbo].[MAQUIUNI].[IX_MAQUIUNI] AS [MU]))
|--Index
Seek(OBJECT:([ALQUISYS].[dbo].[MAQUINA].[MAQUINA43] AS [M]),
SEEK:([M].[CODIGO]=[MU].[CODIGO]) ORDERED FORWARD)

(16 filas afectadas)

StmtText
-

SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='M'
AND L.DEVUELTO='N' AND CLIENTE='4300000486' AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON MU

(1 filas afectadas)

StmtText
-
|--Nested Loops(Left Outer Join, OUTER REFERENCES:([MU].[CODIGO]))
|--Sort(ORDER BY:([MU].[CODIGO] ASC))
| |--Nested Loops(Left Outer Join, OUTER
REFERENCES:([L].[CODIGO]) WITH PREFETCH)
| |--Compute Scalar(DEFINE:([Expr1001]=If ([Expr1011]=0)
then NULL else [Expr1012]))
| | |--Stream Aggregate(GROUP BY:([L].[CODIGO])
DEFINE:([Expr1011]=COUNT_BIG([L].[PENDIDEVO]),
[Expr1012]=SUM([L].[PENDIDEVO])))
| | |--Sort(ORDER BY:([L].[CODIGO] ASC))
| | |--Index
Seek(OBJECT:([ALQUISYS].[dbo].[LICONTRATO].[LICONTRATO2424] AS [L]),
SEEK:([L].[CLIENTE]='4300000486' AND [L].[TIPO]='M' AND [L].[TIPOFAC]='F'
AND [L].[DEVUELTO]='N' OR [L].[CLIENTE]='4300000486' AND [L].[TIPO]='M'
| |--Index
Seek(OBJECT:([ALQUISYS].[dbo].[MAQUIUNI].[MAQUIUNI107] AS [MU]),
SEEK:([MU].[REFERENCIA]=[L].[CODIGO]) ORDERED FORWARD)
|--Index Seek(OBJECT:([ALQUISYS].[dbo].[MAQUINA].[MAQUINA43] AS
[M]), SEEK:([M].[CODIGO]=[MU].[CODIGO]) ORDERED FORWARD)

(9 filas afectadas)

StmtText
SET STATISTICS PROFILE OFF

(1 filas afectadas)





"Maxi" escribió en el mensaje
news:%
Hola, a ver, solo deja un solo query en el SP y compilalo. Luego
ejecutalo y mostrame el plan de ejecucion (pasamelo en formato texto) al
igual que el mismo query fuera del Sp's (armate un archivo .txt para la
data)

Tenes alguna maquina con sp3a?


Salu2
Maxi


"José Antonio" escribió en el
mensaje news:
Tengo instalado el servipack 4, y creo que si estan actualizadas las
estadisticas.

En todo caso ¿como las actualizaria? para probar si es ese el problema.

voy a probar a separar los querys y te digo que es lo que pasa.


"Maxi" escribió en el mensaje
news:eZG2q$
Hola, que vsersion de service pack tienes? y ademas, las estadisticas
las tienes actualizadas?

El sp's tiene los 3 querys juntos? podes probar de separarlos uno por
sp?


-

"José Antonio" escribió en el
mensaje news:
Hola, tengo unas consultas que funcionan correctamente en el
analizador de consultas, sin embargo cuando las añado a la base de
datos en un procedimiento almacenado, van mucho mas lentas.

Los planes de ejecución son diferentes tambien en el analizador de
consultas si ejecuto directamente el codigo del procedemiento que si
llamo el procedimiento con exe y los parametros, ademas de la
diferencia en los planes de ejecución, en los planes de ejecucion de
llamada al procedimiento con exec, los iconos tienen todos un circulo
amarillo con unas flechas en medio y aparacen uncos icnos de
paralelismo que no habias visto nunca.

Estas son las llamadas que hago.

SET STATISTICS IO ON

DECLARE @CLIENTE VARCHAR(10)
SET @CLIENTE='4300000486'

// Esta es la llamada directa que va lenta.

EXEC DR_ELEPENCLIACU @CLIENTE

//Esta es la llamadirecta y el contenido del procedimiento almacenado
es identico.

SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE
L.TIPO='M' AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON MU.REFERENCIA=P.CODIGO LEFT JOIN MAQUINA M
ON M.CODIGO=MU.CODIGO

SELECT P.CODIGO,MEDIO.NOMBRE,P.ALQUILADO,P.DEVUELTO,P.PENDIENTE
FROM (SELECT L.CODIGO,SUM(CANTIDAD) AS ALQUILADO,SUM(CANTIDEVO) AS
DEVUELTO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE
L.TIPO='A' AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MEDIO ON MEDIO.CODIGO=P.CODIGO

SELECT P.CODIGO,SERVICIO.NOMBRE,P.ALQUILADO,P.DEVUELTO,P.PENDIENTE
FROM (SELECT L.CODIGO,SUM(CANTIDAD) AS ALQUILADO,SUM(CANTIDEVO) AS
DEVUELTO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE
L.TIPO='S' AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN SERVICIO ON SERVICIO.CODIGO=P.CODIGO
UNION ALL
SELECT L.CODIGO,L.TEXTO,CANTIDAD AS ALQUILADO,CANTIDEVO AS
DEVUELTO,PENDIDEVO AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='T'
AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H')


Estos son los resultados del STATISTICS IO:

//La llamada al procedimiento almacenado:
Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas 7642,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUIUNI'. Número de exploraciones 2, lecturas lógicas 16,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUINA'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas 7642,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MEDIO'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 4, lecturas lógicas
15284, lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MEDIO'. Número de exploraciones 0, lecturas lógicas 0,
lecturas físicas 0, lecturas anticipadas 0.

//La ejecucion directa de la sentencia

Tabla 'MAQUINA'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUIUNI'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'LICONTRATO'. Número de exploraciones 1, lecturas lógicas 65,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'MEDIO'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'LICONTRATO'. Número de exploraciones 1, lecturas lógicas 149,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas 107,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'SERVICIO'. Número de exploraciones 0, lecturas lógicas 0,
lecturas físicas 0, lecturas anticipadas 0.


Sabeis alguien que puede estar pasando?, todo esto es en el mismor
servidor y la misma base de datos.


Saludos.






















Respuesta Responder a este mensaje
#9 Maxi
21/09/2005 - 22:30 | Informe spam
Jose, me podes pasar el plan de ejecucion del otro servidor? el de sp3 con
un solo procesador


Salu2
Maxi


"Jose Antonio" escribió en el mensaje
news:
El resultado del select property es en un servidor SP3, y ahora tengo que
probar en el otro que tiene servipack 4,
tengo el mismo fallo en los dos servidores (he copiado la base de datos y
esta identica en ambos).

El servidor que tiene SP3 es un Pentium 4 con 1 Gb de memoria y el que
tengo con SP4 es un doble pentiumIII con 2 Gb de memoria, la base de datos
es pequeña tienen 2 Gb aproximadamente.

Saludos.
"Maxi" escribió en el mensaje
news:%
Hola, te hago una pregunta!! tenes mas de un procesador en ese servidor?
me podrias ademas decir los resultados de la siguiente intruccion

Select Serverproperty('ProductLevel')



Salu2
Maxi


"Jose Antonio" escribió en el mensaje
news:e3eQq$
Ya he localizado como era, estos son los resultados.


StmtText

SET STATISTICS PROFILE ON

(1 filas afectadas)

StmtText
-
exec DR_PRUEBA '4300000486'
CREATE PROCEDURE DR_PRUEBA

@CLIENTE AS VARCHAR(10)
AS
SET NOCOUNT ON
SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='M'
AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON M

(3 filas afectadas)

StmtText
-
|--Parallelism(Gather Streams, ORDER BY:([MU].[CODIGO] ASC))
|--Sort(ORDER BY:([MU].[CODIGO] ASC))
|--Nested Loops(Left Outer Join, OUTER
REFERENCES:([MU].[CODIGO]))
|--Hash Match(Left Outer Join,
HASH:([L].[CODIGO])=([MU].[REFERENCIA]),
RESIDUAL:([MU].[REFERENCIA]=[L].[CODIGO]))
| |--Bitmap(HASH:([L].[CODIGO]),
DEFINE:([Bitmap1011]))
| | |--Compute Scalar(DEFINE:([Expr1001]=If
([Expr1009]=0) then NULL else [Expr1010]))
| | |--Stream Aggregate(GROUP
BY:([L].[CODIGO]) DEFINE:([Expr1009]=COUNT_BIG([L].[PENDIDEVO]),
[Expr1010]=SUM([L].[PENDIDEVO])))
| | |--Sort(ORDER BY:([L].[CODIGO]
ASC))
| | |--Parallelism(Repartition
Streams, PARTITION COLUMNS:([L].[CODIGO]))
| | |--Filter(WHERE:([L].[DEVUELTO]='N'))
| | |--Compute
Scalar(DEFINE:([L].[DEVUELTO]=If
(LICONTRATO.[CANTIDAD]-LICONTRATO.[CANTIDEVO]>Convert(0)) then 'N' else
'S', [L].[PENDIDEVO]=LICONTRATO.[CANTIDAD]-LICONTRATO.[CANTIDEVO]))
| |
|--Clustered Index
Scan(OBJECT:([ALQUISYS].[dbo].[LICONTRATO].[PK_LICONTRATO] AS [L]),
WHERE:(([L].[TIPO]='M' AND [L].[CLIENTE]=[@CLIENTE]) AND
(((([L].[TIPOFAC]='H' OR [L].[TIPOFAC]='M') OR [L]
| |--Parallelism(Repartition Streams, PARTITION
COLUMNS:([MU].[REFERENCIA]), WHERE:(PROBE([Bitmap1011])=TRUE))
| |--Compute
Scalar(DEFINE:([MU].[REFERENCIA]=[MU].[CODIGO]+MAQUIUNI.[NUMERO]))
| |--Index
Scan(OBJECT:([ALQUISYS].[dbo].[MAQUIUNI].[IX_MAQUIUNI] AS [MU]))
|--Index
Seek(OBJECT:([ALQUISYS].[dbo].[MAQUINA].[MAQUINA43] AS [M]),
SEEK:([M].[CODIGO]=[MU].[CODIGO]) ORDERED FORWARD)

(16 filas afectadas)

StmtText
-

SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='M'
AND L.DEVUELTO='N' AND CLIENTE='4300000486' AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON MU

(1 filas afectadas)

StmtText
-
|--Nested Loops(Left Outer Join, OUTER REFERENCES:([MU].[CODIGO]))
|--Sort(ORDER BY:([MU].[CODIGO] ASC))
| |--Nested Loops(Left Outer Join, OUTER
REFERENCES:([L].[CODIGO]) WITH PREFETCH)
| |--Compute Scalar(DEFINE:([Expr1001]=If ([Expr1011]=0)
then NULL else [Expr1012]))
| | |--Stream Aggregate(GROUP BY:([L].[CODIGO])
DEFINE:([Expr1011]=COUNT_BIG([L].[PENDIDEVO]),
[Expr1012]=SUM([L].[PENDIDEVO])))
| | |--Sort(ORDER BY:([L].[CODIGO] ASC))
| | |--Index
Seek(OBJECT:([ALQUISYS].[dbo].[LICONTRATO].[LICONTRATO2424] AS [L]),
SEEK:([L].[CLIENTE]='4300000486' AND [L].[TIPO]='M' AND
[L].[TIPOFAC]='F' AND [L].[DEVUELTO]='N' OR [L].[CLIENTE]='4300000486'
AND [L].[TIPO]='M'
| |--Index
Seek(OBJECT:([ALQUISYS].[dbo].[MAQUIUNI].[MAQUIUNI107] AS [MU]),
SEEK:([MU].[REFERENCIA]=[L].[CODIGO]) ORDERED FORWARD)
|--Index Seek(OBJECT:([ALQUISYS].[dbo].[MAQUINA].[MAQUINA43] AS
[M]), SEEK:([M].[CODIGO]=[MU].[CODIGO]) ORDERED FORWARD)

(9 filas afectadas)

StmtText
SET STATISTICS PROFILE OFF

(1 filas afectadas)





"Maxi" escribió en el mensaje
news:%
Hola, a ver, solo deja un solo query en el SP y compilalo. Luego
ejecutalo y mostrame el plan de ejecucion (pasamelo en formato texto)
al igual que el mismo query fuera del Sp's (armate un archivo .txt para
la data)

Tenes alguna maquina con sp3a?


Salu2
Maxi


"José Antonio" escribió en el
mensaje news:
Tengo instalado el servipack 4, y creo que si estan actualizadas las
estadisticas.

En todo caso ¿como las actualizaria? para probar si es ese el
problema.

voy a probar a separar los querys y te digo que es lo que pasa.


"Maxi" escribió en el mensaje
news:eZG2q$
Hola, que vsersion de service pack tienes? y ademas, las estadisticas
las tienes actualizadas?

El sp's tiene los 3 querys juntos? podes probar de separarlos uno por
sp?


-

"José Antonio" escribió en el
mensaje news:
Hola, tengo unas consultas que funcionan correctamente en el
analizador de consultas, sin embargo cuando las añado a la base de
datos en un procedimiento almacenado, van mucho mas lentas.

Los planes de ejecución son diferentes tambien en el analizador de
consultas si ejecuto directamente el codigo del procedemiento que si
llamo el procedimiento con exe y los parametros, ademas de la
diferencia en los planes de ejecución, en los planes de ejecucion de
llamada al procedimiento con exec, los iconos tienen todos un
circulo amarillo con unas flechas en medio y aparacen uncos icnos de
paralelismo que no habias visto nunca.

Estas son las llamadas que hago.

SET STATISTICS IO ON

DECLARE @CLIENTE VARCHAR(10)
SET @CLIENTE='4300000486'

// Esta es la llamada directa que va lenta.

EXEC DR_ELEPENCLIACU @CLIENTE

//Esta es la llamadirecta y el contenido del procedimiento
almacenado es identico.

SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE
L.TIPO='M' AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON MU.REFERENCIA=P.CODIGO LEFT JOIN MAQUINA
M ON M.CODIGO=MU.CODIGO

SELECT P.CODIGO,MEDIO.NOMBRE,P.ALQUILADO,P.DEVUELTO,P.PENDIENTE
FROM (SELECT L.CODIGO,SUM(CANTIDAD) AS ALQUILADO,SUM(CANTIDEVO) AS
DEVUELTO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE
L.TIPO='A' AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MEDIO ON MEDIO.CODIGO=P.CODIGO

SELECT P.CODIGO,SERVICIO.NOMBRE,P.ALQUILADO,P.DEVUELTO,P.PENDIENTE
FROM (SELECT L.CODIGO,SUM(CANTIDAD) AS ALQUILADO,SUM(CANTIDEVO) AS
DEVUELTO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE
L.TIPO='S' AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN SERVICIO ON SERVICIO.CODIGO=P.CODIGO
UNION ALL
SELECT L.CODIGO,L.TEXTO,CANTIDAD AS ALQUILADO,CANTIDEVO AS
DEVUELTO,PENDIDEVO AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='T'
AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H')


Estos son los resultados del STATISTICS IO:

//La llamada al procedimiento almacenado:
Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas
7642, lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUIUNI'. Número de exploraciones 2, lecturas lógicas 16,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUINA'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas
7642, lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MEDIO'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 4, lecturas lógicas
15284, lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MEDIO'. Número de exploraciones 0, lecturas lógicas 0,
lecturas físicas 0, lecturas anticipadas 0.

//La ejecucion directa de la sentencia

Tabla 'MAQUINA'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUIUNI'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'LICONTRATO'. Número de exploraciones 1, lecturas lógicas 65,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'MEDIO'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'LICONTRATO'. Número de exploraciones 1, lecturas lógicas 149,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas 107,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'SERVICIO'. Número de exploraciones 0, lecturas lógicas 0,
lecturas físicas 0, lecturas anticipadas 0.


Sabeis alguien que puede estar pasando?, todo esto es en el mismor
servidor y la misma base de datos.


Saludos.


























Respuesta Responder a este mensaje
#10 José Antonio
22/09/2005 - 07:43 | Informe spam
El servidor que tienen dos procesadores tiene el SP4.

El plan que te pase anteriormente corresponde al servidor que tienen 1 solo
procesador y SP3, y el que te paso ahora es el que tienen dos procesadores y
SP4.

StmtText

SET STATISTICS PROFILE ON

(1 filas afectadas)

StmtText
-
EXEC DR_ELEPENCLIACU '4300000486'
CREATE PROCEDURE DR_ELEPENCLIACU

@CLIENTE AS VARCHAR(10)
AS
SET NOCOUNT ON

SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='M' AND
L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN ('L','S','F','M','H')
GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON M

(3 filas afectadas)

StmtText
-
|--Parallelism(Gather Streams)
|--Nested Loops(Left Outer Join, OUTER
REFERENCES:([MU].[CODIGO]))
|--Hash Match(Left Outer Join,
HASH:([L].[CODIGO])=([MU].[REFERENCIA]),
RESIDUAL:([MU].[REFERENCIA]=[L].[CODIGO]))
| |--Bitmap(HASH:([L].[CODIGO]), DEFINE:([Bitmap1011]))
| | |--Compute Scalar(DEFINE:([Expr1001]=If
([Expr1009]=0) then NULL else [Expr1010]))
| | |--Stream Aggregate(GROUP BY:([L].[CODIGO])
DEFINE:([Expr1009]=COUNT_BIG([L].[PENDIDEVO]),
[Expr1010]=SUM([L].[PENDIDEVO])))
| | |--Sort(ORDER BY:([L].[CODIGO] ASC))
| | |--Parallelism(Repartition
Streams, PARTITION COLUMNS:([L].[CODIGO]))
| |
|--Filter(WHERE:([L].[DEVUELTO]='N'))
| | |--Compute
Scalar(DEFINE:([L].[DEVUELTO]=If
(LICONTRATO.[CANTIDAD]-LICONTRATO.[CANTIDEVO]>Convert(0)) then 'N' else 'S',
[L].[PENDIDEVO]=LICONTRATO.[CANTIDAD]-LICONTRATO.[CANTIDEVO]))
| | |--Clustered Index
Scan(OBJECT:([ALQUISYS].[dbo].[LICONTRATO].[PK_LICONTRATO] AS [L]),
WHERE:(([L].[TIPO]='M' AND [L].[CLIENTE]=[@CLIENTE]) AND
(((([L].[TIPOFAC]='H' OR [L].[TIPOFAC]='M') OR [L].[TIP
| |--Parallelism(Repartition Streams, PARTITION
COLUMNS:([MU].[REFERENCIA]), WHERE:(PROBE([Bitmap1011])=TRUE))
| |--Compute
Scalar(DEFINE:([MU].[REFERENCIA]=[MU].[CODIGO]+MAQUIUNI.[NUMERO]))
| |--Index
Scan(OBJECT:([ALQUISYS].[dbo].[MAQUIUNI].[IX_MAQUIUNI] AS [MU]))
|--Index
Seek(OBJECT:([ALQUISYS].[dbo].[MAQUINA].[MAQUINA43] AS [M]),
SEEK:([M].[CODIGO]=[MU].[CODIGO]) ORDERED FORWARD)

(15 filas afectadas)

StmtText
-

SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT L.CODIGO,SUM(PENDIDEVO)
AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='M' AND L.DEVUELTO='N' AND
CLIENTE='4300000486' AND L.TIPOFAC IN ('L','S','F','M','H') GROUP BY
L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON MU

(1 filas afectadas)

StmtText
-
|--Nested Loops(Left Outer Join, OUTER REFERENCES:([MU].[CODIGO]))
|--Nested Loops(Left Outer Join, OUTER REFERENCES:([L].[CODIGO]) WITH
PREFETCH)
| |--Compute Scalar(DEFINE:([Expr1001]=If ([Expr1009]=0) then NULL
else [Expr1010]))
| | |--Stream Aggregate(GROUP BY:([L].[CODIGO])
DEFINE:([Expr1009]=COUNT_BIG([L].[PENDIDEVO]),
[Expr1010]=SUM([L].[PENDIDEVO])))
| | |--Sort(ORDER BY:([L].[CODIGO] ASC))
| | |--Index
Seek(OBJECT:([ALQUISYS].[dbo].[LICONTRATO].[LICONTRATO2424] AS [L]),
SEEK:([L].[CLIENTE]='4300000486' AND [L].[TIPO]='M' AND [L].[TIPOFAC]='F'
AND [L].[DEVUELTO]='N' OR [L].[CLIENTE]='4300000486' AND [L].[TIPO]='M' AND
[
| |--Index Seek(OBJECT:([ALQUISYS].[dbo].[MAQUIUNI].[MAQUIUNI107]
AS [MU]), SEEK:([MU].[REFERENCIA]=[L].[CODIGO]) ORDERED FORWARD)
|--Index Seek(OBJECT:([ALQUISYS].[dbo].[MAQUINA].[MAQUINA43] AS [M]),
SEEK:([M].[CODIGO]=[MU].[CODIGO]) ORDERED FORWARD)

(8 filas afectadas)

StmtText
SET STATISTICS PROFILE OFF

(1 filas afectadas)


"Maxi" escribió en el mensaje
news:
Jose, me podes pasar el plan de ejecucion del otro servidor? el de sp3 con
un solo procesador


Salu2
Maxi


"Jose Antonio" escribió en el mensaje
news:
El resultado del select property es en un servidor SP3, y ahora tengo que
probar en el otro que tiene servipack 4,
tengo el mismo fallo en los dos servidores (he copiado la base de datos y
esta identica en ambos).

El servidor que tiene SP3 es un Pentium 4 con 1 Gb de memoria y el que
tengo con SP4 es un doble pentiumIII con 2 Gb de memoria, la base de
datos es pequeña tienen 2 Gb aproximadamente.

Saludos.
"Maxi" escribió en el mensaje
news:%
Hola, te hago una pregunta!! tenes mas de un procesador en ese servidor?
me podrias ademas decir los resultados de la siguiente intruccion

Select Serverproperty('ProductLevel')



Salu2
Maxi


"Jose Antonio" escribió en el mensaje
news:e3eQq$
Ya he localizado como era, estos son los resultados.


StmtText

SET STATISTICS PROFILE ON

(1 filas afectadas)

StmtText
-
exec DR_PRUEBA '4300000486'
CREATE PROCEDURE DR_PRUEBA

@CLIENTE AS VARCHAR(10)
AS
SET NOCOUNT ON
SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='M'
AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON M

(3 filas afectadas)

StmtText
-
|--Parallelism(Gather Streams, ORDER BY:([MU].[CODIGO] ASC))
|--Sort(ORDER BY:([MU].[CODIGO] ASC))
|--Nested Loops(Left Outer Join, OUTER
REFERENCES:([MU].[CODIGO]))
|--Hash Match(Left Outer Join,
HASH:([L].[CODIGO])=([MU].[REFERENCIA]),
RESIDUAL:([MU].[REFERENCIA]=[L].[CODIGO]))
| |--Bitmap(HASH:([L].[CODIGO]),
DEFINE:([Bitmap1011]))
| | |--Compute Scalar(DEFINE:([Expr1001]=If
([Expr1009]=0) then NULL else [Expr1010]))
| | |--Stream Aggregate(GROUP
BY:([L].[CODIGO]) DEFINE:([Expr1009]=COUNT_BIG([L].[PENDIDEVO]),
[Expr1010]=SUM([L].[PENDIDEVO])))
| | |--Sort(ORDER BY:([L].[CODIGO]
ASC))
| |
|--Parallelism(Repartition Streams, PARTITION COLUMNS:([L].[CODIGO]))
| | |--Filter(WHERE:([L].[DEVUELTO]='N'))
| | |--Compute
Scalar(DEFINE:([L].[DEVUELTO]=If
(LICONTRATO.[CANTIDAD]-LICONTRATO.[CANTIDEVO]>Convert(0)) then 'N' else
'S', [L].[PENDIDEVO]=LICONTRATO.[CANTIDAD]-LICONTRATO.[CANTIDEVO]))
| | |--Clustered Index
Scan(OBJECT:([ALQUISYS].[dbo].[LICONTRATO].[PK_LICONTRATO] AS [L]),
WHERE:(([L].[TIPO]='M' AND [L].[CLIENTE]=[@CLIENTE]) AND
(((([L].[TIPOFAC]='H' OR [L].[TIPOFAC]='M') OR [L]
| |--Parallelism(Repartition Streams, PARTITION
COLUMNS:([MU].[REFERENCIA]), WHERE:(PROBE([Bitmap1011])=TRUE))
| |--Compute
Scalar(DEFINE:([MU].[REFERENCIA]=[MU].[CODIGO]+MAQUIUNI.[NUMERO]))
| |--Index
Scan(OBJECT:([ALQUISYS].[dbo].[MAQUIUNI].[IX_MAQUIUNI] AS [MU]))
|--Index
Seek(OBJECT:([ALQUISYS].[dbo].[MAQUINA].[MAQUINA43] AS [M]),
SEEK:([M].[CODIGO]=[MU].[CODIGO]) ORDERED FORWARD)

(16 filas afectadas)

StmtText
-

SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='M'
AND L.DEVUELTO='N' AND CLIENTE='4300000486' AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON MU

(1 filas afectadas)

StmtText
-
|--Nested Loops(Left Outer Join, OUTER REFERENCES:([MU].[CODIGO]))
|--Sort(ORDER BY:([MU].[CODIGO] ASC))
| |--Nested Loops(Left Outer Join, OUTER
REFERENCES:([L].[CODIGO]) WITH PREFETCH)
| |--Compute Scalar(DEFINE:([Expr1001]=If ([Expr1011]=0)
then NULL else [Expr1012]))
| | |--Stream Aggregate(GROUP BY:([L].[CODIGO])
DEFINE:([Expr1011]=COUNT_BIG([L].[PENDIDEVO]),
[Expr1012]=SUM([L].[PENDIDEVO])))
| | |--Sort(ORDER BY:([L].[CODIGO] ASC))
| | |--Index
Seek(OBJECT:([ALQUISYS].[dbo].[LICONTRATO].[LICONTRATO2424] AS [L]),
SEEK:([L].[CLIENTE]='4300000486' AND [L].[TIPO]='M' AND
[L].[TIPOFAC]='F' AND [L].[DEVUELTO]='N' OR [L].[CLIENTE]='4300000486'
AND [L].[TIPO]='M'
| |--Index
Seek(OBJECT:([ALQUISYS].[dbo].[MAQUIUNI].[MAQUIUNI107] AS [MU]),
SEEK:([MU].[REFERENCIA]=[L].[CODIGO]) ORDERED FORWARD)
|--Index Seek(OBJECT:([ALQUISYS].[dbo].[MAQUINA].[MAQUINA43] AS
[M]), SEEK:([M].[CODIGO]=[MU].[CODIGO]) ORDERED FORWARD)

(9 filas afectadas)

StmtText
SET STATISTICS PROFILE OFF

(1 filas afectadas)





"Maxi" escribió en el mensaje
news:%
Hola, a ver, solo deja un solo query en el SP y compilalo. Luego
ejecutalo y mostrame el plan de ejecucion (pasamelo en formato texto)
al igual que el mismo query fuera del Sp's (armate un archivo .txt
para la data)

Tenes alguna maquina con sp3a?


Salu2
Maxi


"José Antonio" escribió en el
mensaje news:
Tengo instalado el servipack 4, y creo que si estan actualizadas las
estadisticas.

En todo caso ¿como las actualizaria? para probar si es ese el
problema.

voy a probar a separar los querys y te digo que es lo que pasa.


"Maxi" escribió en el mensaje
news:eZG2q$
Hola, que vsersion de service pack tienes? y ademas, las
estadisticas las tienes actualizadas?

El sp's tiene los 3 querys juntos? podes probar de separarlos uno
por sp?


-

"José Antonio" escribió en
el mensaje news:
Hola, tengo unas consultas que funcionan correctamente en el
analizador de consultas, sin embargo cuando las añado a la base de
datos en un procedimiento almacenado, van mucho mas lentas.

Los planes de ejecución son diferentes tambien en el analizador de
consultas si ejecuto directamente el codigo del procedemiento que
si llamo el procedimiento con exe y los parametros, ademas de la
diferencia en los planes de ejecución, en los planes de ejecucion
de llamada al procedimiento con exec, los iconos tienen todos un
circulo amarillo con unas flechas en medio y aparacen uncos icnos
de paralelismo que no habias visto nunca.

Estas son las llamadas que hago.

SET STATISTICS IO ON

DECLARE @CLIENTE VARCHAR(10)
SET @CLIENTE='4300000486'

// Esta es la llamada directa que va lenta.

EXEC DR_ELEPENCLIACU @CLIENTE

//Esta es la llamadirecta y el contenido del procedimiento
almacenado es identico.

SELECT MU.CODIGO,M.NOMBRE,P.PENDIENTE FROM (SELECT
L.CODIGO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE
L.TIPO='M' AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MAQUIUNI MU ON MU.REFERENCIA=P.CODIGO LEFT JOIN MAQUINA
M ON M.CODIGO=MU.CODIGO

SELECT P.CODIGO,MEDIO.NOMBRE,P.ALQUILADO,P.DEVUELTO,P.PENDIENTE
FROM (SELECT L.CODIGO,SUM(CANTIDAD) AS ALQUILADO,SUM(CANTIDEVO) AS
DEVUELTO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE
L.TIPO='A' AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN MEDIO ON MEDIO.CODIGO=P.CODIGO

SELECT
P.CODIGO,SERVICIO.NOMBRE,P.ALQUILADO,P.DEVUELTO,P.PENDIENTE FROM
(SELECT L.CODIGO,SUM(CANTIDAD) AS ALQUILADO,SUM(CANTIDEVO) AS
DEVUELTO,SUM(PENDIDEVO) AS PENDIENTE FROM LICONTRATO L WHERE
L.TIPO='S' AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H') GROUP BY L.CODIGO) P
LEFT JOIN SERVICIO ON SERVICIO.CODIGO=P.CODIGO
UNION ALL
SELECT L.CODIGO,L.TEXTO,CANTIDAD AS ALQUILADO,CANTIDEVO AS
DEVUELTO,PENDIDEVO AS PENDIENTE FROM LICONTRATO L WHERE L.TIPO='T'
AND L.DEVUELTO='N' AND CLIENTE=@CLIENTE AND L.TIPOFAC IN
('L','S','F','M','H')


Estos son los resultados del STATISTICS IO:

//La llamada al procedimiento almacenado:
Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas
7642, lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUIUNI'. Número de exploraciones 2, lecturas lógicas 16,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUINA'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas
7642, lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MEDIO'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 4, lecturas lógicas
15284, lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MEDIO'. Número de exploraciones 0, lecturas lógicas 0,
lecturas físicas 0, lecturas anticipadas 0.

//La ejecucion directa de la sentencia

Tabla 'MAQUINA'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'MAQUIUNI'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'LICONTRATO'. Número de exploraciones 1, lecturas lógicas 65,
lecturas físicas 0, lecturas anticipadas 0.

Tabla 'MEDIO'. Número de exploraciones 10, lecturas lógicas 20,
lecturas físicas 0, lecturas anticipadas 0.
Tabla 'LICONTRATO'. Número de exploraciones 1, lecturas lógicas
149, lecturas físicas 0, lecturas anticipadas 0.

Tabla 'LICONTRATO'. Número de exploraciones 2, lecturas lógicas
107, lecturas físicas 0, lecturas anticipadas 0.
Tabla 'SERVICIO'. Número de exploraciones 0, lecturas lógicas 0,
lecturas físicas 0, lecturas anticipadas 0.


Sabeis alguien que puede estar pasando?, todo esto es en el mismor
servidor y la misma base de datos.


Saludos.






























Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida