Я не пойду, какой из них правильный , потому что это субъективно и зависит от архитектуры вашего приложения и ваших внутренних стандартов.
Работа с базой данных может повлиять на производительность в зависимости от сценария и данных.
Допустим, у вас есть таблица ORDER
со столбцом STATUS_CODE
, в которой будут только значения в верхнем регистре (скажем, из основной таблицы). Теперь, если вы хотите получить все ордера, размещенные на 1 Apr 2011
, которые находятся в состоянии «ЗАКРЫТО», и это «ЗАКРЫТО» происходит из выпадающего списка пользовательского интерфейса и может иметь как верхний, так и нижний регистр (по любой причине).
Здесь выполнение upper для базы данных или в C # не должно иметь большого значения.
select *
from order
where order_date = '1 Apr 2011'
and status_code = upper(:status_code)
Но, допустим, ваша (хорошо, моя) таблица order
не относится ни к одной мастер-таблице и может иметь как верхний, так и нижний регистр (это не очень хороший дизайн БД). Вы можете сделать следующее:
select *
from order
where order_date = '1 Apr 2011'
and upper(status_code) = upper(:status_code)
, которая может иметь серьезные проблемы с производительностью в зависимости от данных в таблице.
Для одного оракула не удастся использовать индекс по столбцу status_code
(если он есть).