Как лучше (с точки зрения производительности) установить значение переменной?
По
SET
команде:DECLARE @VarString nvarchar(max); SET @VarString = 'john doe'; SELECT @VarString;
По
SELECT
команде:DECLARE @VarString nvarchar(max); SELECT @VarString = 'john doe'; SELECT @VarString;
SELECT
быстрее при назначении значений нескольким переменным одновременно . В противном случае разница в производительности незначительна.SET
это быстрее, а затем на полпути вниз он добавляет: «Как ни странно, если вы увеличите количество прогонов, скажем, 10, тоSET
отстает».Ответы:
Не выбирайте одно или другое строго для производительности.
Выберите основанный на том, что соответствует вашему стилю и развитию потребностей, как рекомендуются в заключении к этому прекрасному сравнению
SELECT
иSET
(курсив и второстепенное форматирование добавлены):источник
Я думаю, что консенсус в том, что разница между ними ничтожна (при том,
SET
что они быстрее). Но если вы похожи на меня, я бы использовал,SET
где это уместно, для удобства чтения. Следующий парень, который будет поддерживать ваш код, поблагодарит вас за это ;-)источник
Я всегда использую SET, если я не заполняю несколько переменных из набора результатов 1 запроса. Таким образом, используя SELECT, мы запрашиваем таблицу только один раз.
источник