SQL CASE против умножения

У меня такой запрос:

SELECT
  CASE WHEN IsAdd = 1
  THEN
    Base + Extra
  ELSE
    Base
  END
FROM MyTable

Будет ли использование умножения для исключения оператора CASE более высокой производительностью?

SELECT
    Base + Extra * ISNULL(IsAdd, 0)
FROM MyTable

Преждевременная / микрооптимизация. Гикам это нравится. Я люблю это. Это пустая трата времени. Сконцентрируйтесь на более широкой картине и углубляйтесь в эти детали только после того, как вы продемонстрируете, что они находятся являются проблемой и стоят вашего времени. Неизменно проблемы, которые действительно нуждаются в оптимизации, не те, о которых вы думали.

MatBailie 16.05.2018 12:26
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
3
1
119
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам не нужно беспокоиться о такой оптимизации.

Расходы на запрос SQL обычно связаны с чтением данных, извлечением записей и возвратом результатов. Простые операции, такие как умножение или сравнение, несущественны. Некоторые операции может становятся дорогостоящими (например, работа с пользовательскими функциями, длинными строками и т. д.). Но умножение обычно не входит в их число.

Итак, сосредоточьтесь на том, что лучше всего представляет работу, которую вы хотите выполнить. Два ваших запроса не выражают одну и ту же логику. Они могут оказаться одинаковыми, если IsAdd принимает только значения 0, 1 и NULL. Но вы должны использовать ту версию, которая лучше всего выражает ваши намерения.

Кстати, я предпочитаю COALESCE()ISNULL(), потому что он стандартный.

Другие вопросы по теме