Ich habe PostgreSQL läuft zusammen mit EF7.Am wenigsten teure Operation, um nach neuen Aufzeichnungen in der Tabelle mit EF zu suchen
Meine Tabellenstruktur:
- Id (bigint)
- Inhalt (Text)
- CreatedAt (Zeitstempel ohne Zeitzone NOT NULL)
ich in meinem Frontend unendlich Scroll haben App und Abfrageergebnisse mit .Skip (n) & .Aufnahme (m). I.e.
.Skip(0), .Take(10);
.Skip(10), .Take(10);
.Skip(20), .Take(10);
<...>
nun beim Scrollen, wenn es neuere Aufzeichnungen sind, dann muss ich wissen, wie viele und fügen Sie (n) Funktion .skip. Ich muss sie nicht anzeigen, sondern muss sie beim Überspringen berücksichtigen.
Zeit für sie Ich überprüfe wie so doch sollte dies scheinbar ziemlich teuer sein, nachdem Tabelle 50k-100k Aufzeichnungen überschreiten:
_myRepository.GetAll().Where(x => x.CreatedAt > newestActivityDate).Count();
GetAll():
public IQueryable<Activity> GetAll()
{
return _context.Activities.OrderByDescending(x => x.CreatedAt);
}
Was wäre die beste (performanteste) Operation, um zu überprüfen, ob neue Datensätze vorhanden sind & Wie viele? Nach Datum prüfen und nur dann zählen, wenn neue Datensätze vorhanden sind?
EDIT: GetAll() Beschreibung für mehr Klarheit hinzugefügt.
Liefert 'GetAll() '' IQueryable'? – haim770
Ja, GetAll() gibt IQueryable zurück – ign
Wenn Sie "nextActivityDate" immer wissen - eine Option besteht darin, Ihre Abfragen nur mit Where (x => c.CreatedAt <= nextActivityDate) zu begrenzen. Dann wird die Suche nach neuen Datensätzen überflüssig. – Evk