Ich bin mit einem sehr seltsamen Problem.Linq nicht richtige Artikel in einer großen Tabelle
Ich habe eine Tabelle mit mehr als 800.000 Datensätze und 2GB MDF-Datenbank.
Wenn ich versuche, die letzten Datensätze zu erhalten:
Ich bekomme nur die Datensätze bis vor einem Monat, die letzten nicht angezeigt.
Aber wenn ich die Auswahl auf die letzten IDs beschränken, dann bekomme ich das erwartete Ergebnis.
Dim Items = From Item In DB.Items _
Where Item.CatID = CatID _
And Item.ID > 600000 _
Order By Item.PubDate Descending _
Select Item Take 100
Also, was ist hier los.
Hat Linq eine Begrenzung der Datensätze, die abgefragt werden können?
Was passiert, wenn Sie die entsprechende Abfrage in SQL ausführen? Linq2Sql sollte es in etwas wie konvertieren (Oder aktivieren Sie Linq2Sql Ablaufverfolgung, um die genaue Abfrage zu erhalten: "SELECT TOP 100 * FROM ItemsTable WHERE CatId = ORDER BY PubDate DESC" Liefert die Abfrage was Sie erwarten? Auch nur für die allgemeine Intelligenz, Stellen Sie sicher, dass Sie einen Index für CatId und PubDate (DESC) haben, wenn diese Abfrage eine allgemeine ist –
Talljoe
Was ist der Pubdate des 100. Datensatzes in den beiden Szenarien? –
vielleicht hätte ich diesen Kommentar ein wenig erweitert. Die Art von Szenario Sie Beschreibung könnte durch unterschiedliche Kultur auf der Plattform, auf der die Abfrage ausgeführt wird, und durch die Kultur der Datenbank ausgelöst werden (in dem Fall, dass das Datum als Datum und nicht als Tick in der Datenbank gespeichert wird) –