На ваш вопрос лучше всего отвечают предложения «С» (CTE, я думаю, в MSSS).
На самом деле лучший вопрос: я должен сохранить это вычисленное значение или пересчитать его для каждой строки, каждого икаждый раз, когда я запрашиваю таблицу.
Есть ли в таблице 10 строк и всегда 10 строк?
Постоянно ли добавляются строки?
Есть ли у вас стратегия очистки вразместить или просто позволить ему расти?
Запрос к этой таблице только один раз в месяц?
Если это «длительная» функция (даже после того, как вы ее оптимизировали),почему вы хотите выполнить это не раз, когда-либо?
Вы просили один раз, но вы действительно спрашиваете один раз за строку, за запрос.
Хранение ответа в индексе или «виртуальном столбце»
Плюсы:
Вычислить ровно один раз за строку.Время запросов не растет линейно.
Минусы: увеличивает время вставки / обновления
Расчет каждый раз
Плюсы:
Оптимизировано время вставки / обновления
Минусы: время запроса увеличивается с количеством строк.(не масштабируется)
Если вы запрашиваете один раз в месяц, почему вас волнует, насколько плоха производительность, настройте что-то, что на самом деле имеет большое влияние на ваши операции (очень легкомысленно).
Если вы не вставляете связку (зависит от вашего оборудования) строк в секунду, будет ли трата времени вперёд иметь большую разницу?