Qual é a melhor maneira (com relação ao desempenho) para definir um valor como variável?
Por
SET
comando:DECLARE @VarString nvarchar(max); SET @VarString = 'john doe'; SELECT @VarString;
Por
SELECT
comando:DECLARE @VarString nvarchar(max); SELECT @VarString = 'john doe'; SELECT @VarString;
sql-server
sql-server-2008
query-performance
Gadonski
fonte
fonte
SELECT
é mais rápido ao atribuir valores a várias variáveis ao mesmo tempo . Caso contrário, a diferença de desempenho é insignificante.SET
é mais rápido; depois, na metade do caminho, ele acrescenta: "Estranhamente, se você aumentar o número de corridas para dizer 10, o númeroSET
começa a ficar para trás".Respostas:
Não escolha um ou outro estritamente para desempenho.
Escolha com base no que se adapta ao seu estilo e às necessidades de desenvolvimento, conforme recomendado na conclusão desta excelente comparação entre
SELECT
eSET
(ênfase e menor formatação adicionada):fonte
Eu acho que o consenso é que há uma diferença insignificante de desempenho entre os dois (
SET
sendo mais rápido). Mas se você é como eu, eu usariaSET
onde apropriado para fins de legibilidade. O próximo cara que manterá seu código agradecerá por isso ;-)fonte
Eu sempre uso SET, a menos que esteja preenchendo várias variáveis do conjunto de resultados de 1 consulta. Dessa forma, usando SELECT, apenas consultamos a tabela uma vez.
fonte