Ho un pezzo dinamico di SQL. Ci vogliono circa 4 minuti per correre. Se invece prendo l'output dell'SQL e lo eseguo, occorrono circa 20 secondi. Perché la discrepanza? So che ci vorrebbe un po 'di tempo per costruire l'SQL nella versione dinamica, ma non riesco a immaginare che sia così costoso.SQL dinamico che impiega molto più tempo dell'equivalente codificato
Qualcuno ha qualche idea? Le due query dovrebbero essere identiche, quindi sospettavo che fosse qualcosa di strano con il caching del piano di query, ma in realtà non ho molte idee.
Modifica: Per chiarire cosa intendo prendendo l'output.
In SQL dinamico l'ultima riga è
EXEC sp_executesql @myQuery,
N'@var1 INT,
@var2 INT,
@var2 INT',
@var1,
@var2,
@var3
ho preso il valore di myQuery e metterlo in un file SQL. Questo è in esecuzione a 20 secondi mentre quello dinamico che usa execute richiede 4 minuti.
Modifica 2 Ho rimosso i parametri. Ho ottenuto risultati interessanti. L'istruzione SQL dinamica ha visto un miglioramento delle prestazioni. La versione hardcoded ha visto un enorme successo nelle prestazioni. I due sono circa uguali ora.
Inserisci il tuo codice. – Taryn
Puoi mostrare il tuo codice? –
Dovresti aggiungere molte più informazioni, ma se hardcoded è molto più veloce allora stai sicuramente facendo qualcosa di sbagliato. – TFennis