2016-07-04 2 views
1

У меня есть программа с базой данных с информацией о людях, которая содержит миллион записей.Запросы LINQ или SQL. Что более эффективно?

Одной из задач было фильтровать результаты по дате рождения, то группа их по городам и, наконец, сравнить население каждого города с данными числами.

Я начал писать все в SQL запросе, но потом я начал задаваться вопросом, что это может сделать сервер слишком занят, и, возможно, лучше, чтобы сделать некоторые расчеты с самим приложением.

Я хотел бы знать, есть ли какие-то правила/рекомендации

  • когда использовать сервер для вычислений?
  • Когда использовать такие инструменты, как LINQ в приложении?
+0

Загрузка все в ваше приложение может стоить много Память. И загрузка всех в ваше приложение также занимает ваш сервер. –

+0

@juergend: Однако также часто приходится выполнять некоторую обработку в базе данных и некоторую обработку в остальной части вашей программы, например, фильтровать данные вниз в конце базы данных, а затем делать с ней сложное преобразование в коде. –

+1

Этот конкретный случай не звучит ужасно сложно. Сначала я попробую написать его в SQL и посмотреть, как он работает и как выглядит план запроса. –

ответ

0

Для таких требований нет фиксированного правила или стратегии, он приводится в действие приложения/бизнес-требований, несколько предложений, которые могут помочь:

  • Обычно Sql Query делает хорошую работу в вспенивание много данных для доставки фильтрации с меньшим количеством результатов фильтрации/группировки/сортировки. Однако для этого требуется
    правильный дизайн стола, индексирование для оптимизации. Поскольку размер данных увеличение Sql может при выполнять

  • Передача данных по сети, с организованной базы данных для приложения является то, что убивает производительность, поскольку сеть может быть узким местом, особенно если данные за определенный размер

  • . Обработка памяти с использованием Linq2Objects может быть очень быстрой для повторных вызовов, которым необходимо применять фильтры, сортировать данные и выполнять некоторую дополнительную обработку.

  • Если пользовательский интерфейс является богатым клиентом, вы можете позволить себе принести много данных в памяти и продолжать работать с ним с помощью Linq, он может быть частью структур данных памяти, если пользовательский интерфейс является Web, тогда вы d для кэширования данных

  • Для выполнения тех же операций, что и в sql, для данных в памяти для нескольких типов, вам нужен специальный код, который предпочтительно использует деревья выражений вместе с linq, иначе простой linq будет делать для известного фиксированного типа

у меня есть подобный проект в одном из моих веб-приложений, как правило, это комбинация, которая лучше всего работает в большинстве практических сценариев

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