none
Estrema lentezza parsificazione e compilazione Query (cardinality estimator) RRS feed

  • Domanda

  • Salve a tutti,

    stiamo rilevando una situazione particolare nell'esecuzione di una query molto complessa dove il tempo di parsificazione e compilazione risulta molto elevato utilizzando il cardinality estimator introdotto su SQL server 2014.

    Facendo girare la stessa query con il parametro OPTION(QUERYTRACEON 9481) per forzare l'utilizzo della precedente versione i tempi sono invece immediati.

    La cosa molto particolare è data dal fatto che lo statement prevede la forma INSERT INTO...SELECT... dove l'esecuzione della sola SELECT è praticamente immediata mentre l'esecuzione dello statement completo impiega più di un minuto.

    Dalle statistiche si vede che tutto il tempo è impiegato per la parsificazione e compilazione della query.

    Esecuzione completa --> 

    SQL Server parse and compile time: 
       CPU time = 72015 ms, elapsed time = 80058 ms.

    Esecuzione della sola SELECT -->

    SQL Server parse and compile time: 
       CPU time = 359 ms, elapsed time = 862 ms.

    Sapete darmi una spiegazione o suggerimenti per ovviare a questo problema?

    Premetto che:

    - sto provando con SQL 2014 SP2

    - non posso far uso di query parametriche in quanto l'applicativo che genera lo statement non lo prevede.

    Ringrazio in anticipo chi può darmi una mano a capire come posso risolvere.

    Grazie

    martedì 22 gennaio 2019 21:00

Tutte le risposte

  • Lo statement creato è stato in qualche modo modificato da una versione all'altra? la composizione della Insert va a fare anche delle query o fa solo la Insert?



    Sabrina C. - http://www.dotnetwork.it

    domenica 27 gennaio 2019 10:36
  • No, lo statement è rimasto invariato tra una versione e l'altra.

    La insert esegue esattamente la stessa query per popolare una tabella temporanea.

    Grazie

    lunedì 28 gennaio 2019 07:57