Como evaluar procedimientos almacenados

03/03/2009 - 16:10 por Pedro J. Reguera | Informe spam
Hola:

Tengo hecho dos procedimientos almacenados cuya función es la misma (en
definitiva devolver datos en páginas de datos) a una página asp.net, en uno
uso tablas temporales de memoria (disculpad si no se llaman así, uso DECLARE
@tmp TABLE...) en el otro no las uso, ya se que las tablas temporales son
malas malísimas, pero por otro lado en el otro procedimiento me veo obligado
a hacer más consultas y a usar la instrución OVER, quisiera saber si hay
algún método en SQL Server 2008 Express Edition para saber el "coste" de
máquina al ejecutar una consulta u otra para medir de alguna forma cual es
la más eficiente.

Gracias y un saludo.
Pedro J.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
03/03/2009 - 16:38 | Informe spam
Hay varios métodos: puedes ver el coste en cuanto operaciones de IO
ejecutando SET STATISTICS IO ON, el tiempo que tarda cada sentencia mediante
SET STATISTICS TIME ON, pero lo que realmente te va a decir cómo se ejecuta
cada sentencia es mirando su plan de ejecución (CTRL+M)

No recuerdo ahora si SQL Express trae como herramienta cliente SQL Profiler,
pero ésta también te proporciona valiosa información acerca del coste de las
peticiones.


Un saludo
-
www.navento.com
Servicios de Localización GPS


"Pedro J. Reguera" wrote:

Hola:

Tengo hecho dos procedimientos almacenados cuya función es la misma (en
definitiva devolver datos en páginas de datos) a una página asp.net, en uno
uso tablas temporales de memoria (disculpad si no se llaman así, uso DECLARE
@tmp TABLE...) en el otro no las uso, ya se que las tablas temporales son
malas malísimas, pero por otro lado en el otro procedimiento me veo obligado
a hacer más consultas y a usar la instrución OVER, quisiera saber si hay
algún método en SQL Server 2008 Express Edition para saber el "coste" de
máquina al ejecutar una consulta u otra para medir de alguna forma cual es
la más eficiente.

Gracias y un saludo.
Pedro J.


Respuesta Responder a este mensaje
#2 Ricardo Passians
03/03/2009 - 18:38 | Informe spam

No recuerdo ahora si SQL Express trae como herramienta cliente SQL
Profiler,





No lo trae pero hay opciones de Profiler para SQL Express:

http://code.google.com/p/sqlexpress...loads/list


Ricardo Passians
Respuesta Responder a este mensaje
#3 Ricardo Passians
03/03/2009 - 18:51 | Informe spam

ya se que las tablas temporales son malas malísimas,



No es cierto que sean malas o malísimas de por sí. Su mal uso, como con
todo, o el uso innecesario es lo que es malo.

En SP's, a veces son realmente útiles para reutilizar datos que se han
modificado temporalmente en dichas tablas, sobre todo dentro de un proceso
complejo. También pueden servir para descomponer (y tratar de agilizar) una
consulta que sea extremadamente ineficiente, cuando ya se han agotado otras
opciones de rediseño de la consulta o creación de índices apropiados.

Ricardo Passians
Respuesta Responder a este mensaje
#4 Pedro J. Reguera
03/03/2009 - 19:10 | Informe spam
Muchas gracias a ambos..
Muy util el profiler Ricardo.

Un saludo.
Pedro J.


"Ricardo Passians" escribió en
el mensaje de noticias news:
>
No recuerdo ahora si SQL Express trae como herramienta cliente SQL
Profiler,





No lo trae pero hay opciones de Profiler para SQL Express:

http://code.google.com/p/sqlexpress...loads/list


Ricardo Passians



Respuesta Responder a este mensaje
#5 Pedro J. Reguera
04/03/2009 - 12:27 | Informe spam
Bueno si, la utilidad no se las quita nadie (supongo que si no fueran utiles
no existirían).
Una vez analizado el procedimiento con el fantástico programa que me has
pasado ejecutado sobre una tabla de cien mil registros resulta que el
procedimiento que usa las tablas temporales tarda TRES veces más tiempo en
ejecutarse que el otro, así que aunque el otro sea más complicado de montar,
en pro del rendimiento en ejecución (que no en desarrollo, que tardo
más... ) a partir de ahora dejaré las tablas temporales de lado, al menos
para la paginación de datos para presentarlos.

Gracias de nuevo y un saludo.
Pedro J.




"Ricardo Passians" escribió en
el mensaje de noticias news:
>
ya se que las tablas temporales son malas malísimas,



No es cierto que sean malas o malísimas de por sí. Su mal uso, como con
todo, o el uso innecesario es lo que es malo.

En SP's, a veces son realmente útiles para reutilizar datos que se han
modificado temporalmente en dichas tablas, sobre todo dentro de un proceso
complejo. También pueden servir para descomponer (y tratar de agilizar)
una consulta que sea extremadamente ineficiente, cuando ya se han agotado
otras opciones de rediseño de la consulta o creación de índices
apropiados.

Ricardo Passians

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