2010-10-15 2 views
0

Предположим, что мы имеем таблицу с collumns (A, B, C) Мы хотим, чтобы искать эту таблицу на основе критериев, который рассчитывается из collumn C ... и другие параметрыSQL и поисковый запрос вычисленное значение

Поскольку вычисление является сложным и не может быть представлено в sql-запросе ... Что мне делать? Сделайте фильтрацию на уровне приложения?

+1

Какой сервер вы используете? –

+1

Не можете ли вы сохранить результат комплексного вычисления вместе с A, B и C вместо вычисления его при выборе строк? –

+0

Укажите свою базу данных, так как в SQL можно сделать довольно сложные вещи (например, в postgres довольно легко смешивать python, perl, tcl или pl с SQL). – Unreason

ответ

1

Нет серебряной пули здесь.

Pros

Вы можете иметь довольно сложные вычисления на уровне базы данных, то профи делать это на уровне базы данных, в том, что СУБД ближе к данным и передавать данные туда и обратно из дисков, через RDBMS , через сеть, в приложение обычно более дорого, а затем выполняет вычисления в СУБД (где выполняется SQL) и отправляет только результаты в приложение.

Другой про то, что централизация логики делает систему проще в обслуживании, но ...

Против

... в зависимости от вашей базы данных по выбору, вы можете не иметь широкий выбор языков программирования, доступных на уровне РСУБД, поэтому для более сложных задач может оказаться очень неудобным кодирование вашей задачи в некотором процедурном варианте SQL.

Другие причины не выполнять его на уровне РСУБД - если расчеты являются ресурсоемкими (процессор, память, проблемы с O (n!) И т. Д.), А размер вывода сопоставим с входом. В этом случае данные доставки на стороне приложения могут быть интересны для облегчения ресурсов сервера базы данных (вы в некотором смысле распределяете вычислительные задачи, однако, если ваш сервер приложений живет на том же оборудовании, что и сервер базы данных, вы, возможно, ничего не выиграете, если только вы не может полностью продвигать клиентов, смотреть на трехуровневую и многоуровневую архитектуру).

+0

microsoft sql я использую ... как я могу использовать язык программирования с sql-сервером? – GorillaApe

+0

@Parhs, вы можете начать с http://www.aspfree.com/c/a/MS-SQL-Server/Implementing-Managed-code-in-SQL-Server-2005-using-Visual-Studio-NET- 2005 / – Unreason

0

Альтернативой может быть создание/хранимой процедуры функции в базе данных, что делать математику для вас, а затем вызвать его в ИНЕКЕ запроса

Смежные вопросы