Optimizar el rendimiento de los procedimientos almacenados de SQL Server 2008

Optimizar el rendimiento de los procedimientos almacenados de SQL Server 2008

Buenos días.
Después de tanto sopesar la cuestión, he decidido migrar mis bases de datos de SQL Server 2000 a SQL Server 2008 (Standard Edition).
Teniendo mis bases de datos corriendo, he controlado al azar el insert de datos, la emisión de informes (que tengo asociados a Crystal Reports 9). Hasta aquí todo bien.
Pero la cuestión es la siguiente: tengo un procedimiento almacenado en una de las bases de datos que por no poder mejorar en su momento la manera de llevarlo, terminó con 7000 líneas de código. Es un procedimiento que debe seguir un hilo de ejecución para que tome valores previos. El procedimiento es un cálculo para poder generar recibos de sueldos.
Para generar 50 recibos y 1329 registros que conforman el detalle de los recibos, el procedimiento demoraba 1' 30'' en SQL Server 2000. Pero al ejecutar el mismo procedimiento, con las mismas condiciones de entorno en la misma PC se fue a 3' 40''.
Hay alguna manera de optimizar la ejecución de los procedimientos almacenados? Estoy probando el asistente para la optimización del motor de base de datos, pero no sé si es la herramienta que estoy buscando...
Agradecería si alguien puede brindarme un poquito de luz en esta tormenta...
Gracias de antemano.


Comentarios

Hola buen día !

Es fundamental Reindexar y actualizar las estadisticas de las tablas correspondientes a la base migrada.

Te paso a detallar los pasos.

A) Version: Pre SQL Server 2008 R2

A.1) Reindexar todos los indices.

DBCC DBREINDEX ('Tabla', '', fill_factor);

Nota: El valor de fill_factor lo tomas del siguiente query: select name,fill_factor from sys.indexes.

A.2) Actualizar estadisticas.

UPDATE STATISTICS 'Tabla' WITH FULLSCAN

B)Version: SQL Server 2008 R2

B.1) Reindexar todos los indices de las tablas de usuario.

DBCC DBREINDEX NO ES Soportado. Deberás utilizar ALTER INDEX por indice en las tablas.

Ej: ALTER INDEX PK_Employee_EmployeeID ON HumanResources.Employee REBUILD;

B.2) Actualizar estadisticas.

UPDATE STATISTICS 'Tabla' WITH FULLSCAN

Espero te sirva, abrazo virtual

JuanPLG


Hola Juan!
Gracias por tomarte el tiempo en contestar mi pregunta.
Lo he puesto en práctica y la verdad es que es asombroso cómo reduce el consumo de tiempo!
Muchas gracias por tu ayuda.
Saludos cordiales.