Existe-t-il une différence de vitesse entre l'utilisation d'EXEC sp_executesql et le SQL direct

Si c'était une grande requête serait-il plus rapide sur la deuxième procédure stockée?

CREATE PROCEDURE Customers_GetCustomer @CustId CHAR(5) AS BEGIN DECLARE @SQL NVARCHAR(2000) SET @SQL = 'SELECT ContactName FROM Customers WHERE CustomerId = @CustomerId' EXEC sp_executesql @SQL, N'@CustomerId CHAR(5)', @CustomerId = @CustId END 

Contre:

 CREATE PROCEDURE Customers_GetCustomer @CustId CHAR(5) AS BEGIN SELECT ContactName FROM Customers WHERE CustomerId = @CustId END 

Avec une simple requête comme celle-ci, il n'y aura pratiquement aucune différence même à 1000s d'exécutions / sec. (Basé sur mes propres tests quand j'ai eu la même question.)

En supposant qu'il est correctement paramétré, une requête complexe ne disposera que de la charge supplémentaire de hachage de la string la plus longue pour correspondre au cache d'exécution.

Mais je suggère de le tester vous-même, avec https://www.brentozar.com/archive/2015/05/how-to-fake-load-tests-with-sqlquerystress/ par exemple.