Heim >Datenbank >MySQL-Tutorial >Implementierungsmethoden der segmentierten Abfragetechnologie in wichtigen Datenbanken
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 主键 ascOralce-Datenbank
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 >= MMySQL-Datenbank
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,20Wählen Sie die Top 15 * aus YOURTABLE aus, wobei die ID nicht vorhanden ist in (wählen Sie die 15 besten IDs aus YOURTABLE aus, Reihenfolge nach ID desc) Reihenfolge nach ID descErklären Sie etwas: 15 ist die Anzahl der Zeilen pro Seite, YOURTABLE ist der Tabellenname, ID ist das Primärschlüsselfeld im table (natürlich können Sie auch other verwenden), besteht meine obige SQL-Anweisung darin, die zweite Seite (zweite 15 Datensätze) abzurufen. Wenn Sie die Seitenzahl ändern möchten, ändern Sie einfach die folgenden 15 in das entsprechende Vielfache. Auf diese Weise habe ich in Kombination mit dem DataRepeater-Plugin ohne Paging-Funktion ein Notizblockprogramm in drei Strichen geschrieben, fünf geteilt durch zwei. Lachen Sie mich nicht aus, ich bin ein Neuling in .NET, ich schreibe dies zuerst, um meine Fähigkeiten zu üben. Wenn jemand Interesse hat, hinterlassen Sie bitte eine Nachricht und ich kann den Code posten.
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