Usuario
Query dimamica mucho mas lenta que estatica

Pregunta
-
Buenas tardes:
Estoy realizando un store procedure con una query dinamica ya que necesito diversos filtros variables, el problema es que la query tarda 90 segundo en responder y si corro la misma query pero de manera estatica tarda menos de 3 segundo, ademas de que me consume demasiada memoria. Alguien me puede explicar el porque de la lentitud o algun metodo para agilizarla..
Gracias por su ayuda.
Todas las respuestas
-
Hola Edgar_Chihuahua:
Que la consulta dinámica sea "mas cara" que la estática, parece del todo razonable.
La lentitud se pueden deber a 3 millones de factores,
Si la pegas en el foro a lo mejor 2 millones se pueden resolver.
No obstante, repasa los indices que afectan a las tablas que estas tocando, pues puede que tengas que regenerar alguno y reorganizar.
De un modo simple si el Sql Server que utilizas es 2012 o más, directamente, puedes hacer
alter index all on dbo.categories rebuild; /*reconstruir sobre el objeto dbo.categories */ alter index all on dbo.categories reorganize; /*reorganizar*/
o sobre el managment studio, en el explorador de objetos, dentro de la tabla, en la carpeta índices, click sobre el boton derecho y volver a generar o reorganizar
https://docs.microsoft.com/es-es/sql/t-sql/statements/alter-index-transact-sql?view=sql-server-2017#rebuilding-indexes
Un saludo
-
-
Muchas gracias por tu respuesta, en este momento estoy reindexando las tablas, pero aun no me queda claro la gran diferencia de tiempo entre la query dinamica executada por el sp sys.sp_sqlexec y ejecutarla directamente, es una gran diferencia de tiempo pero como dices deja reindexo puede de que algun indice no este bien.
Muchas gracias @Javi Fernandez
-
Pudieras postear como armas la sql dinamica?
AMB
Some guidelines for posting questions...
AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas