Lentitud al ejecutar procedimiento almacenado contra método .FindFirst y SELECT

06/04/2009 - 17:44 por José A. Giménez [Py] | Informe spam
Saludos a todos, estos probando mostrar datos en un formulario de access
2007, lo hago mediante un procedimiento almacenado en SQl Server Exress
2008, al que le envio un parámetro y me devuelve los datos que necesito. Son
pocos campos, con informacion toda de tipo texto.
Llamo al procedimiento por código almacenado usando ADO.
He leido que siempre es mejo utilizar procedimientos almacenados para
realizar las grabaciones y modificaciones en los registros de una base en
SQl Server Express 2008 para ganar efeiciencia.
He probado con varios código apra ver cual es más rápido, incluso u código
que no ejecuta procedimiento almacenado y lo hace haciendo directamente un
SELECT sobre la tabla.
El código que más rápido trae los datos no es el del procedimeinto
almacenado, sino en el que uso el método .FindFisrt para localizar el
registro y mostrar sus datos.
Tenía entendido que el procedimeinto almacenado sería más rápido, la
difencia entre el código con .FindFirst y el procedimiento almacenado es muy
gtande, casi 1 segundo.
No debería ser la llamada al procedimiento almacenado más rápida?
Gracias

Preguntas similare

Leer las respuestas

#16 Carlos Sacristan
07/04/2009 - 17:13 | Informe spam
Lo suyo sería usar pool de conexiones para reutilizarlas. Creo recordar que
OleDB no permitía, deberás usar el proveedor SQL Native Client.


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


"José A. Giménez [Py]" wrote:

Hola Carlos, he puesto timers y he notado que como dices, la conexion es lo
que tarda mucho, en varias pruebas he obtenido resultados que van desde 0,28
a 0,68 segundos para la conexión, un valor de 0,09375 en la ejecución del
procedimiento almacenado, paso de los parámetros y display en el form

Esta el cadena de conexio que uso por código:
Set cnn = Nothing
Dim cnn As ADODB.connection

cnn.Open "Provider=SQLOLEDB; " & _
"Initial Catalog=Datos Upisa; " & _
"Data Source=SQLSERVER\SQLEXPRESS; " & _
"integrated security=SSPI; persist security info=True;"

Tienes alfuna sugerencia para hacer la conexión má rápido?
Mil gracias por el apoyo y la ayuda, relmente te lo agradezco




Respuesta Responder a este mensaje
#17 Carlos Sacristan
07/04/2009 - 17:22 | Informe spam
Aunque, estoy pensando ahora... si al tener una conexión abierta en SSMS va
más rápido puede que sea porque realmente se está utilizando el pool.

¿Has probado ver qué ocurre cuando abres por segunda vez ese formulario (sin
tener la conexión de SSMS abierta)? ¿Tarda lo mismo?


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


"Carlos Sacristan" wrote:


Lo suyo sería usar pool de conexiones para reutilizarlas. Creo recordar que
OleDB no permitía, deberás usar el proveedor SQL Native Client.


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


"José A. Giménez [Py]" wrote:

> Hola Carlos, he puesto timers y he notado que como dices, la conexion es lo
> que tarda mucho, en varias pruebas he obtenido resultados que van desde 0,28
> a 0,68 segundos para la conexión, un valor de 0,09375 en la ejecución del
> procedimiento almacenado, paso de los parámetros y display en el form
>
> Esta el cadena de conexio que uso por código:
> Set cnn = Nothing
> Dim cnn As ADODB.connection
>
> cnn.Open "Provider=SQLOLEDB; " & _
> "Initial Catalog=Datos Upisa; " & _
> "Data Source=SQLSERVER\SQLEXPRESS; " & _
> "integrated security=SSPI; persist security info=True;"
>
> Tienes alfuna sugerencia para hacer la conexión má rápido?
> Mil gracias por el apoyo y la ayuda, relmente te lo agradezco
>
>
>
>
Respuesta Responder a este mensaje
#18 José A. Giménez [Py]
07/04/2009 - 17:24 | Informe spam
Ok, gracias, probaré

"Carlos Sacristan" escribió en
el mensaje news:

Lo suyo sería usar pool de conexiones para reutilizarlas. Creo recordar
que
OleDB no permitía, deberás usar el proveedor SQL Native Client.


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


"José A. Giménez [Py]" wrote:

Hola Carlos, he puesto timers y he notado que como dices, la conexion es
lo
que tarda mucho, en varias pruebas he obtenido resultados que van desde
0,28
a 0,68 segundos para la conexión, un valor de 0,09375 en la ejecución del
procedimiento almacenado, paso de los parámetros y display en el form

Esta el cadena de conexio que uso por código:
Set cnn = Nothing
Dim cnn As ADODB.connection

cnn.Open "Provider=SQLOLEDB; " & _
"Initial Catalog=Datos Upisa; " & _
"Data Source=SQLSERVER\SQLEXPRESS; " & _
"integrated security=SSPI; persist security info=True;"

Tienes alfuna sugerencia para hacer la conexión má rápido?
Mil gracias por el apoyo y la ayuda, relmente te lo agradezco







Respuesta Responder a este mensaje
#19 Carlos Sacristan
07/04/2009 - 17:25 | Informe spam
Por eso te comentaba que el proceso de migración no termina cuando le das al
botón de "Finish" del asistente. Hay que dejar el sistema optimizado (o al
menos pensado) para SQL Server, y eso el asistente no lo hace.


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


"José A. Giménez [Py]" wrote:

Gracias Alejandro por tus respuestas, voy a probar, realmente me señalaste
algo que no había llevado en cuenta. La base de datos se exportó
directamente desde access y está trabajando sobre un sistema hecho en
access, la que yo tengo en el SQL Server es para las pruebas de migración,
pero en realidad no aposté a mejorar el diseño y las cosas raras de esas
tablas, voy a seguir tus indicaciones. Gracias!




Respuesta Responder a este mensaje
#20 José A. Giménez [Py]
07/04/2009 - 18:08 | Informe spam
Si, al cerrar tarda lo mismo.
Al abrilo de vuelta, vuela!
Creo que lo mejor será prescindir del procedimiento almacenado para traer
los datos, usar la cadena de conexion con el proveedor SQL Native Client y
hacer un "SELECT..FROM..WHERE" directamente sobre la tabla Bancos.

...Y usar los procedimientos almacenados en los casos en los en verdad tenga
que procesar mucha cantidad de información y en las actualizaciones de datos
(por ejmplo en mi caso de ahora, usar unprocedimeinto almacenado apra
actualizar algun campo de la tabla bancos).
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida