Ausführen von zwei Abfragen in einem einzigen Umlauf in die Datenbank

9

Ich habe den folgenden Code, um eine Volltextsuche durchzuführen. Es erstellt eine Abfrage, ruft die Gesamtzahl der von dieser Abfrage zurückgegebenen Zeilen ab und ruft dann die tatsächlichen Zeilen nur für die aktuelle Seite ab.

%Vor%

Das funktioniert gut, erfordert aber zwei Rundreisen zur Datenbank. Gibt es im Interesse der Optimierung des Codes eine Möglichkeit, diese Abfrage zu überarbeiten, so dass sie nur einen Umlauf in die Datenbank hatte?

    
Jonathan Wood 23.03.2016, 05:16
quelle

2 Antworten

2

Ja, Sie können diese beiden Operationen mit Hilfe der einzigen Abfrage an die Datenbank ausführen:

%Vor%

Wenn Sie MSSQL query verwenden, wird das so aussehen:

%Vor%     
Slava Utesinov 23.03.2016, 06:02
quelle
1

Ich bin mir nicht sicher, ob es genug ist, aber es ist machbar unter den folgenden Einschränkungen:

(1) CurrentPage und RowsPerPage sind vom totalRows -Wert nicht betroffen.
(2) Die Abfrage wird materialisiert, nachdem die Paging-Parameter angewendet wurden.

Der Trick besteht darin, group by constant value zu verwenden, was von EF unterstützt wird. Der Code sieht so aus:

%Vor%     
Ivan Stoev 23.03.2016 11:13
quelle

Tags und Links