none
Query dimamica mucho mas lenta que estatica RRS feed

  • 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.

    jueves, 14 de junio de 2018 18:01

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

    jueves, 14 de junio de 2018 18:19
  • Además por si tiene un problema de statics, puede ejecutar exec sp_updatestats

    jueves, 14 de junio de 2018 18:21
  • 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

     
    jueves, 14 de junio de 2018 19:32