I am using EF5
with the MoreLinq
extenstion, while testing my program in production (very big database), I found out that the line:
var x = db.TheBigTable.MaxBy(x => x.RecordTime);
Takes very long time (RecordTime
is a non-indexed datetime
)
Is that because MaxBy
always runs on the client side (and firstly gets ALL records from the database)?
Here is the signature of the MaxBy
extension method:
public static TSource MaxBy<TSource, TKey>(this IEnumerable<TSource> source,
Func<TSource, TKey> selector)
{
return source.MaxBy(selector, Comparer<TKey>.Default);
}
It returns the maximal element (based on the given projection) of an IEnumerable<T>
, not an IQueryable<T>
. So the results of the query db.TheBigTable
are indeed all loaded into memory first, and then they are iterated to find the maximum.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With