Detaillierte Erläuterung der Fallstricke beim Mischen von MySQL-Order-By und Limit

Detaillierte Erläuterung der Fallstricke beim Mischen von MySQL-Order-By und Limit

In MySQL verwenden wir häufig order by zum Sortieren und limit zum Paginieren. Wenn wir zuerst sortieren und dann paginieren müssen, verwenden wir häufig einen ähnlichen Ausdruck: select * from table name order by sort field limt M,N. Allerdings birgt dieser Schreibstil tiefere Nutzungsfallen. Wenn das Sortierfeld doppelte Daten enthält, können die Sortierergebnisse leicht nicht den Erwartungen entsprechen.
Wie in der Tabelle gezeigt:

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Beim Abfragen der ersten und letzten Seite:

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Lösung:

AUSWÄHLEN * AUS Kaufinfo ORDER BY Aktionszeit, ID LIMIT 0,2;

Die oben genannten tatsächlichen Ausführungsergebnisse haben bewiesen, dass zwischen Realität und Vorstellung oft eine Lücke besteht. Die tatsächliche SQL-Ausführung wird nicht auf die oben beschriebene Weise ausgeführt. Tatsächlich optimiert MySQL hier Limit. Spezifische Optimierungsmethoden finden Sie im offiziellen Dokument: https://dev.mysql.com/doc/refman/5.7/en/limit-optimization.html

/*
Navicat MySQL-Datenübertragung

Quellserver: Lokales mysql8.0
Quellserverversion: 80018
Quellhost: localhost:3308
Quelldatenbank: baihe

Zielservertyp: MySQL
Zielserverversion: 80018
Dateikodierung: 65001

Datum: 2020-06-09 14:47:37
*/

SETZEN SIE FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Tabellenstruktur für Kaufinformationen
-- ----------------------------
Tabelle löschen, wenn `Kaufinfo` vorhanden ist;
CREATE TABLE `purchaseinfo` (
  `id` int(11) NICHT NULL AUTO_INCREMENT,
  `Benutzer-ID` int(11) DEFAULT '0',
  `inout` varchar(1) ZEICHENSATZ utf8mb4 SORTIMENT utf8mb4_0900_ai_ci STANDARD NULL,
  `Geld` int(11) DEFAULT NULL,
  `Aktionszeit` Datum/Uhrzeit STANDARD NULL KOMMENTAR 'jiaoyi',
  Primärschlüssel (`id`),
  SCHLÜSSEL `UserId` (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Aufzeichnungen der Kaufinformationen
-- ----------------------------
INSERT INTO `purchaseinfo` VALUES ('7', '1', 'I', '10000', '2020-06-09 18:05:41');
INSERT INTO `purchaseinfo` VALUES ('8', '7788', 'O', '20000', '2020-06-09 18:05:15');
INSERT INTO `purchaseinfo` VALUES ('9', '7788', 'I', '20000', '2020-06-09 18:05:15');
INSERT INTO `purchaseinfo` VALUES ('10', '7788', 'O', '50000', '2020-06-09 18:05:15');
INSERT INTO `purchaseinfo` VALUES ('11', '1', 'O', '50000', '2020-06-09 18:05:15');
INSERT INTO `purchaseinfo` VALUES ('12', '1', 'O', '50000', '2020-06-09 18:05:15');
INSERT INTO `purchaseinfo` VALUES ('13', '1', 'O', '50000', '2020-06-09 18:05:15');
INSERT INTO `purchaseinfo` VALUES ('14', '1', 'O', '50000', '2020-06-09 18:05:15');
INSERT INTO `purchaseinfo` VALUES ('15', '1', 'O', '50000', '2020-06-09 18:05:15');
INSERT INTO `purchaseinfo` VALUES ('16', '1', 'O', '50000', '2020-06-09 18:05:15');

Dies ist das Ende dieses Artikels über die Fallstricke beim Mischen von MySQL-Order-by und -Limit. Weitere Informationen zum Mischen von MySQL-Order-by und -Limit finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Lösung zur Datenduplizierung bei Verwendung von Limit+Order By in der MySql-Paging
  • Lösung für das Problem, dass „order by“ in MySQL-Unterabfragen nicht wirksam ist
  • Zusammenfassung von drei Möglichkeiten zum Implementieren von Rankings in MySQL ohne Verwendung von „order by“
  • So verwenden Sie MySQL „group by“ und „order by“ gemeinsam
  • So verwenden Sie Indizes zur Optimierung von MySQL ORDER BY-Anweisungen
  • Mysql-Sortierung und Paginierung (Order by & Limit) und vorhandene Fallstricke
  • Abfrageprozess und Optimierungsmethode der (JOIN/ORDER BY)-Anweisung in MySQL
  • MySQL versteht kurz, wie "order by" funktioniert
  • Detaillierte Erläuterung der MySQL-Methode zur Optimierung der Reihenfolge nach Anweisung
  • Details zur Verwendung von „order by“ in MySQL

<<:  Ein praktischer Leitfaden zu den Komponenten zur Leistungsoptimierung beim ersten Bildschirm von Vue-Projekten

>>:  Der Designprozess des Logos zum Mittherbstfest von Alibaba in Kombination mit der Website

Artikel empfehlen

Beispielcode zur Implementierung eines bildadaptiven Containers mit CSS

Es gibt häufig Szenarien, in denen das Bild an di...

Vue realisiert problemlos Wasserzeicheneffekte

Vorwort: Verwenden Sie den Wasserzeicheneffekt im...

Kapselungsmethode der Vue-Breadcrumbs-Komponente

Vue kapselt die Breadcrumb-Komponente zu Ihrer In...

Kurze Analyse von CentOS 7 mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar

Baidu Cloud-Festplatte: Link: https://pan.baidu.c...

5 einfache Möglichkeiten, Speicherplatz auf Ubuntu freizugeben

Vorwort Die meisten Benutzer führen diesen Vorgan...

js zur Realisierung des Mausverfolgungsspiels

In diesem Artikel wird der spezifische Code von j...

Detaillierte Schritte zum Erweitern der LVM-Festplatte unter Linux

1. Fügen Sie eine Festplatte hinzu 2. Überprüfen ...

Lösung für den Fehler, dass IE6 select nicht durch div abgedeckt werden kann

Verwenden Sie div, um eine Maske zu erstellen oder...

Detaillierte Erklärung der in Node.js integrierten Module

Inhaltsverzeichnis Überblick 1. Pfadmodul 2. Bis ...

Installieren Sie Apache2.4+PHP7.0+MySQL5.7.16 auf macOS Sierra

Obwohl Mac-Systeme mit PHP und Apache ausgeliefer...

js, um ein Wasserfall-Flusslayout zu erreichen (unendliches Laden)

In diesem Artikelbeispiel wird der spezifische Co...

Warum wird deine Like-Aussage nicht indexiert?

Vorwort Dieser Artikel zielt darauf ab, die langw...

Die HTML-Eingabedateisteuerung begrenzt den Typ der hochgeladenen Dateien

Fügen Sie der Webseite ein HTML-Steuerelement für...

Eine vollständige Liste gängiger Linux-Systembefehle für Anfänger

Das Erlernen von Linux-Befehlen stellt für die me...