У меня такой запрос:
SELECT
CASE WHEN IsAdd = 1
THEN
Base + Extra
ELSE
Base
END
FROM MyTable
Будет ли использование умножения для исключения оператора CASE более высокой производительностью?
SELECT
Base + Extra * ISNULL(IsAdd, 0)
FROM MyTable


Вам не нужно беспокоиться о такой оптимизации.
Расходы на запрос SQL обычно связаны с чтением данных, извлечением записей и возвратом результатов. Простые операции, такие как умножение или сравнение, несущественны. Некоторые операции может становятся дорогостоящими (например, работа с пользовательскими функциями, длинными строками и т. д.). Но умножение обычно не входит в их число.
Итак, сосредоточьтесь на том, что лучше всего представляет работу, которую вы хотите выполнить. Два ваших запроса не выражают одну и ту же логику. Они могут оказаться одинаковыми, если IsAdd принимает только значения 0, 1 и NULL. Но вы должны использовать ту версию, которая лучше всего выражает ваши намерения.
Кстати, я предпочитаю COALESCE()ISNULL(), потому что он стандартный.
Преждевременная / микрооптимизация. Гикам это нравится. Я люблю это. Это пустая трата времени. Сконцентрируйтесь на более широкой картине и углубляйтесь в эти детали только после того, как вы продемонстрируете, что они находятся являются проблемой и стоят вашего времени. Неизменно проблемы, которые действительно нуждаются в оптимизации, не те, о которых вы думали.