Implementierung der datenbanksegmentierten Abfragetechnologie
Segmentierte Abfrage bedeutet, dass beim Abfragen von Daten nicht alle Daten, die die Bedingungen erfüllen, auf einmal abgerufen werden Einlesen Erinnerung. Das gleichzeitige Abfragen aller Daten verringert die Abfrageeffizienz und die Antwort an den Client dauert lange. Segmentierte Abfragen bedeuten, dass das Ergebnis jeder Abfrage die auf jeder Seite angezeigte Zahl ist Die Abfrageeffizienz wird erheblich verbessert.
Zum Beispiel befinden sich 100.000 Datenelemente pro Seite. Wenn Sie auf die Seitenzahl klicken, werden nur die 20 Elemente angezeigt, die angezeigt werden müssen Die Seitenzahl wird abgefragt, und es werden keine anderen Seiten abgefragt, d Beginnend mit dem M-ten Datensatz in der Datenbanktabelle unter Verwendung des Top-Schlüsselworts: Beachten Sie, dass, wenn top in der Select-Anweisung vorhanden ist, auch order by vorhanden ist, das aus der sortierten Ergebnismenge auswählt:
SELECT *
FROM ( SELECT Top N * FROM (SELECT Top (M + N - 1) * FROM 表名称 Order by 主键 desc) t1 ) t2 Order by 主键 asc
N Datensätze ab dem M-ten Datensatz in der Datenbanktabelle abrufen
SELECT * FROM ( SELECT TOP 20 * FROM (SELECT TOP 29 * FROM Sys_option order by sys_id desc) t1) t2 Order by sys_id asc
Zum Beispiel aus 10 Datensätzen oder 20 Datensätzen aus der Tabelle Sys_option (dem Primärschlüssel). ist sys_id), die Anweisung lautet wie folgt:
SELECT * FROM (SELECT ROWNUM r,t1.* From 表名称 t1 where rownum < M + N) t2 where t2.r >= M
Meine SQL-Datenbank ist die einfachste, sie verwendet die LIMIT-Funktion von MySQL, LIMIT [Offset, ] Zeilen. Die Anweisung zum Abrufen von N Datensätzen beginnend mit M Datensätzen in der Datenbanktabelle lautet:
SELECT * FROM (SELECT ROWNUM R,t1.* From Sys_option where rownum < 30 ) t2 Where t2.R >= 10
Das Folgende ist ein Codeausschnitt:
Das Folgende ist ein Codeausschnitt:
SELECT * FROM 表名称 LIMIT M,N
Wenn ich Wenn ich in der Vergangenheit ORACLE verwendet habe, konnte ich einfach ROWNUM als Bedingung für das Paging verwenden. Egal wie effizient es war, es war trotzdem einfacher zu implementieren.
Wie implementiert ACCESS die Paging-Funktion? Nachdem ich einige Informationen gelesen habe, ist es etwas kompliziert und erfordert das Schreiben einer Menge Code. Ich habe mir eine gute Methode ausgedacht, die ich mit Ihnen teilen kann:
select * from sys_option limit 10,20
Bitte beachten Sie:
Wenn Sie die ersten 15 Datensätze nehmen, kann die SQL-Anweisung nicht wie folgt geschrieben werden:
Wenn Sie schreiben Wenn es so läuft, wird ein Fehler gemeldet. Schreiben Sie es direkt:
select top 15 * from YOURTABLE where ID not in(select top 0 ID from YOURTABLE order by ID desc) order by ID desc