Heim >Datenbank >MySQL-Tutorial >Implementierungsmethoden der segmentierten Abfragetechnologie in wichtigen Datenbanken

Implementierungsmethoden der segmentierten Abfragetechnologie in wichtigen Datenbanken

大家讲道理
大家讲道理Original
2016-11-12 10:37:403417Durchsuche

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 *


Zum Beispiel lautet die Anweisung aus der Tabelle Sys_option (der Primärschlüssel ist sys_id) aus 10 Datensätzen oder beim Abrufen von 20 Datensätzen wie folgt:


FROM ( SELECT Top N *
FROM (SELECT Top (M + N - 1) * FROM 表名称 Order by 主键 desc) t1 ) t2
Order by 主键 asc
Oralce-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 >= M
MySQL-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:


Zum Beispiel: Ob 10 Datensätze oder 20 Datensätze aus der Tabelle Sys_option abgerufen werden sollen (der Primärschlüssel ist sys_id), lautet die Anweisung wie folgt:


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
Wä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 desc

Erklä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:

Wenn Sie Einschränkungen hinzufügen möchten, können Sie es so schreiben:
  select top 15  *  from YOURTABLE where ID not in(select top 0 ID from YOURTABLE order by ID desc)  order by ID desc

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn