Фильтры LinqToSQL DateTime? - PullRequest
       5

Фильтры LinqToSQL DateTime?

0 голосов
/ 19 июля 2009

У меня есть фильтрация и упорядочение запросов linqtosql по столбцу даты, выполнение которого занимает 20 секунд. Когда я запускаю сгенерированный sqlquery непосредственно в БД, он возвращается через 0 секунд.

var myObjs = DB.Table
.Where(obj => obj.DateCreated>=DateTime.Today)
.OrderByDescending(obj => obj.DateCreated);

В таблице всего 100 000 записей, а столбец DateTime проиндексирован.

Просто еще один в длинной очереди жалоб на производительность linqtosql. Но это ОЧЕНЬ плохо, что я уверен, что что-то не так делаю.

Ответы [ 3 ]

1 голос
/ 19 июля 2009

Спасибо, ребята ...

Проблема была моя, а не Линка. Для краткости я сократил запрос в вопросе, но на самом деле был еще один фильтр, который был применен к столбцу без индекса. Добавление индекса решило проблему.

Хотя через цикл я получил то, что, как предположил Джон Скит, выполнение запроса в Sql Mgmt studio дало ложное чувство уверенности, поскольку запрос был разбит на страницы и очень быстро вернул 20 верхних строк, что заставило меня задуматься Линк был виноват. Так что проблема с индексами обнаружилась только в linq, а не в sql mgmt studio.

1 голос
/ 19 июля 2009

Я подозреваю, что разница в том, что хотя выполнение сгенерированного запроса занимает всего 0 секунд, это потому, что он не показывает все результаты, если вы используете что-то вроде Enterprise Manager. Простая загрузка (и десериализация) всех данных для 100 000 результатов может занять значительное время, но ваш ручной запрос, вероятно, показывает только первые 20 обращений или что-то подобное.

Если вы запускаете тот же SQL-запрос в .NET и используете DataReader для извлечения всех данных, сколько времени это займет?

Если вы запускаете сервер с включенным профилированием, сколько времени, по его словам, потребовалось для выполнения запроса из LINQ to SQL?

0 голосов
/ 19 июля 2009

Я не вижу ничего плохого в вашем запросе. Было бы здорово увидеть T-SQL, сгенерированный Linq. Вы пробовали это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...