2011-01-21 2 views
0

Есть ли проблемы с производительностью, связанные с использованием IQueryable?
Кроме того, если я использую курсор вместо IQueryable (это лучше).
IQueryable vs IEnumerable - IList?
Я использую MongoDB как мою базу данных. СпасибоНедостатки использования IQueryable!

+1

Ваша самая большая проблема с точки зрения производительности, вероятно, будет MongoDB, я бы посмотрел туда, прежде чем вы начнете беспокоиться о .Net. – Lazarus

+1

Нет, я так не думаю: D – Rawhi

ответ

4

Я не знаю, как связывание работает MongoDB C#, но описать, как это обычно работает:

При использовании IQueryable выражение строится дерево, а затем переводится в формат базы данных может понять, а затем выполняется в базы данных сервера.

Обычно это имеет небольшие накладные расходы (построить дерево выражений и перевести его) по сравнению с непосредственным написанием запросов в формате, который понимает база данных.

С помощью IEnumerable делегаты используются вместо выражений. Он должен перебирать полный набор данных, а затем фильтрует с помощью Linq-To-Objects. Это намного медленнее.

4

Это просто разные интерфейсы, и поскольку интерфейсы не содержат никакой реализации, это не имеет значения для производительности, которую вы используете.

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