У меня любопытный вопрос об эффективности. Скажем, у меня есть поле в базе данных, которое представляет собой просто числовую цифру, которая представляет что-то еще. Например, значение 1 означает, что срок составляет 30 дней.
Было бы лучше (более эффективно) закодировать оператор SELECT, подобный этому ...
SELECT
CASE TermId
WHEN 1 THEN '30 days'
WHEN 2 THEN '60 days'
END AS Term
FROM MyTable
... и привязать результаты непосредственно к GridView, или было бы лучше оценить поле TermId в событии RowDataBound GridView и соответствующим образом изменить текст ячейки?
Не беспокойтесь о расширяемости или чем-то подобном, меня беспокоят только различия в общей эффективности. Как бы то ни было, база данных находится на веб-сервере.





По ряду причин я бы обработал перевод в виде сетки.
Причина №1: ресурс SQL используется совместно. Сетка раздается. Лучшая масштабируемость.
Причина №2: меньшая пропускная способность для передачи пары целых чисел и строк.
Причина № 3: код можно локализовать для других языков, не затрагивая код SQL Server.
Моя ошибка №2. Я не заметил, что среда была ASP.NET. Я думал о сетке WinForms.
Эффективность, вероятно, здесь не имеет значения - хотя ремонтопригодность кода имеет значение. Спросите себя - изменятся ли эти ценности? Что, если они это сделают? Что мне нужно делать после 2 лет использования, если эти значения изменятся? Если станет очевидным, что создание сценариев для них на SQL будет означать лучшую ремонтопригодность (легче изменить), то сделайте это в хранимой процедуре. Если позже их будет проще изменить в коде, сделайте это. Выгоды от любого из них довольно низкие, поскольку код совсем не выглядит сложным.
Поле в таблице базы данных с именем TermID будет подразумевать, что оно представляет собой внешний ключ для другой таблицы (возможно, называется «Term»).
Если это так, то, возможно, в этой таблице есть (или должно быть) поле описания, которое может содержать текст «30 дней». Вы можете / должны присоединиться к этой таблице, чтобы получить описательный текст.
Хотя это соединение не может повысить эффективность, оно достаточно легкое, чтобы не мешать.
Нет, другой таблицы с описаниями у нас нет. Эти числа установлены внутри компании и хорошо известны.
Я не понимаю причину №2. Разве пропускная способность не будет одинаковой, поскольку пользователь будет видеть одно и то же независимо от выбранного метода?