Esempio di query:Perché la versione parametrizzata di questa query è più lenta di una versione non parametrizzata?
CREATE PROCEDURE dbo.Test (@p varchar(10))
AS
DECLARE @param varchar(10)
SET @param = @p + '%'
SELECT * FROM table1 t1
INNER JOIN table2 t2 on t1.id = tr.id
WHERE t2.desc LIKE @param
Sono una query che è simile a quello sopra e quando uso questo stored procedure viene eseguito a tempo indeterminato senza dare alcun output. Ma se io uso la stessa query,
Questo esegue in meno di un secondo.
mio table2 ha 140K record e TABLE1 alcuni 250K
Qualche idea di cosa potrebbe essere la causa come operatore per l'esecuzione lenta?
Hai esaminato un piano di spiegazioni per la query? –
Sulla base dei vostri test, non sembra affatto che abbia qualcosa a che fare con la parola chiave simile, poiché anche la versione veloce include quell'operatore. – JohnFx
ho provato a eseguire entrambi e viene eseguito meno di un secondo quando utilizzo direttamente i parametri. –