У меня есть несколько большая таблица, которую я запрашиваю в своем веб-приложении, и я хочу только вернуть N количество строк из таблицы.Как работает метод Take()?
Я прочитал документацию MSDN, но я не могу понять, где он указывает, если Take()
сначала извлекает все записи из БД или ведет себя аналогично SQL Server TOP
.
Я беспокоюсь, если Take()
будет тянуть все записи, а затем получить верхнюю N число записей или он будет вести себя, как ожидается, и получать только N количество записей непосредственно
Вы можете использовать SQL Profiler, чтобы увидеть SQL он создает для себя. Предполагая, что вы вызываете .Take() в IQueryable, он должен выполнить TOP N против SQL Server. Я всегда использую профилировщик, чтобы гарантировать, что Linq-SQL/Entities генерирует полупристойный SQL. – DaveShaw
Что делает 'Take()', зависит от используемой вами реализации баз данных и того, как вы ее используете. Все распространенные, которые я использовал, делают правильно. –
Какую версию «LINQ» вы используете? LINQ to SQL? Entity Framework? –