У меня очень странная проблема.Linq Не извлекает правильные элементы в большой таблице
У меня есть таблица с более чем 800 000 записей и 2 ГБ базы данных.
Когда я пытаюсь получить последние записи:
Я получаю записи только месяц назад, последние не отображаются.
Dim Items = From Item In DB.Items _
Where Item.CatID = CatID _
Order By Item.PubDate Descending _
Select Item Take 100
Но если я ограничиваю выбор до последних идентификаторов, то получаю ожидаемый результат.
Dim Items = From Item In DB.Items _
Where Item.CatID = CatID _
And Item.ID > 600000 _
Order By Item.PubDate Descending _
Select Item Take 100
Итак, что здесь происходит.
Имеет ли Linq лимит записей, которые он может запросить?
Что происходит, когда вы запускаете эквивалентный запрос в SQL? Linq2Sql должен преобразовать его в нечто вроде (или включить трассировку Linq2Sql, чтобы получить точный запрос: «SELECT TOP 100 * FROM ItemsTable WHERE CatId = ORDER BY PubDate DESC« Возвращает ли запрос то, что вы ожидаете? Кроме того, просто для общей умности, убедитесь, что у вас есть указатель на CatId и PubDate (DESC), если этот запрос является общим. –
Talljoe
Что такое публикация 100-й записи в двух сценариях? –
Возможно, мне следовало бы немного расширить этот комментарий. описание может быть вызвано другой культурой на платформе, на которой выполняется запрос, и культуре базы данных. (В случае, когда дата хранится как дата, а не галочка в db) –