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.