MySQL fragt den aktuellsten Datensatz der SQL-Anweisung ab (Optimierung)

MySQL fragt den aktuellsten Datensatz der SQL-Anweisung ab (Optimierung)

Die schlechteste Option besteht darin, die Ergebnisse nach Zeit zu sortieren und das erste zu nehmen.

Wählen Sie * aus einem 
wobei Erstellungszeit<="2017-03-29 19:30:36" 
Sortieren nach Erstellungszeitpunkt desc
Grenze 1

Obwohl diese Methode den aktuellsten Datensatz zum aktuellen Zeitpunkt abrufen kann, muss die Tabelle für jede Abfrage einmal durchlaufen werden, was bei Abfragen mit mehr als einer Million Datenpunkten zeitaufwändig ist. Bei limit werden zuerst alle Ergebnisse und dann das erste abgerufen, was unnötig viel Zeit und Platz in der Abfrage beansprucht. Und wenn Sie den aktuellsten Datensatz stapelweise abrufen müssen, z. B.: „Eine Bestelltabelle enthält Benutzer, Bestellzeiten und -mengen, und Sie müssen die aktuellsten Bestelldatensätze aller Benutzer gleichzeitig abfragen“, muss für die Abfrage jedes Benutzers die gesamte Tabelle einmal durchlaufen werden. Bei großen Datenmengen erhöht sich die Zeit exponentiell und kann nicht in der Praxis genutzt werden.

Mittlere Strategie - Abfrage sortiert und gruppiert nach

Wählen Sie * aus (
  Wählen Sie * aus einem
  wobei Erstellungszeit<="2017-03-29 19:30:36" 
  Sortieren nach Erstellungszeitpunkt desc
) Gruppierung nach Benutzer-ID

Später stellte ich fest, dass ich mit „group by“ zwar nach der Parameterspalte von „group by“ gruppieren kann, aber nur ein Ergebnis zurückgibt. Nach genauer Beobachtung stellte ich fest, dass „group by“ den ersten Datensatz nach der Gruppierung zurückgibt. Standardmäßig wird die Zeit nach der Abfrage der Reihe nach sortiert. Sie müssen die Zeit daher zunächst in umgekehrter Reihenfolge sortieren, um die Zeit abzurufen, die der aktuellen am nächsten kommt.

Diese Abfrage führt tatsächlich zwei Abfragen aus. Obwohl die Zeit viel schneller ist als bei der ersten Methode, kann sie weiter optimiert werden.

Die beste Strategie besteht darin, die Methode max() in Kombination mit group by zu verwenden.

Wählen Sie *,max(create_time) aus einem
wobei Erstellungszeit<="2017-03-29 19:30:36" 
Gruppieren nach Benutzer-ID

Dieser Satz kann so verstanden werden, dass der Ergebnisset nach der Benutzer-ID gruppiert wird und der Datensatz mit der längsten Zeit in jeder Gruppe übernommen wird. Dadurch ist eine stapelweise Abfrage der neuesten Datensätze möglich und es muss nur einmal durch die Tabelle gegangen werden, so dass die Ergebnisse auch bei sehr großen Datenmengen in kürzester Zeit vorliegen.

Erweiterungen:

Jetzt gibt es eine Asset-Ausstattungstabelle: base_assets_turn

Abfrage des neuesten Vermögensverwalters

Hinweis: Angenommen, die Anlagennummer ASSETS_ID=254

Die nächstbeste Option:

Wählen Sie * aus Base_Assets_Turn 
wobei ASSETS_ID = 254
Sortieren nach Erstellungszeitpunkt desc
Grenze 1

Mittlere Politik:

wählen Sie * aus (wählen Sie * aus base_assets_turn 
wobei ASSETS_ID = 254
Sortiert nach Erstellungszeitpunkt, absteigend) tt GROUP BY tt.ASSETS_ID;

Beste Strategie:

Wie sollte also die beste Strategie formuliert werden? Hinterlassen Sie gerne eine Nachricht!

Oben finden Sie die MySQL-SQL-Anweisung zum Abfragen des aktuellsten Datensatzes (Optimierung), die Ihnen vom Herausgeber zur Verfügung gestellt wurde. Ich hoffe, sie ist für alle hilfreich. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht!

Das könnte Sie auch interessieren:
  • Eine kurze Erläuterung von 30 gängigen Methoden zur Optimierung von SQL-Abfragen in MySQL
  • 10 SQL-Anweisungsoptimierungstechniken zur Verbesserung der MySQL-Abfrageeffizienz
  • 10 Tipps zur Optimierung von MySQL SQL-Anweisungen
  • Detaillierte Erläuterung der MySQL SQL-Anweisungsanalyse und Abfrageoptimierung
  • Analysieren Sie die Probleme der SQL-Anweisungseffizienzoptimierung beim Lesen, Schreiben, Indizieren und anderen Vorgängen in MySQL-Tabellen
  • Tipps zur Optimierung von MySQL SQL-Anweisungen
  • MySQL-Optimierung: So schreiben Sie hochwertige SQL-Anweisungen
  • 19 gängige und effektive Methoden zur MySQL-Optimierung (empfohlen!)

<<:  Installation, Konfiguration und Verwendung des Process Daemon Supervisors unter Linux

>>:  Beispielcode für ein einfaches, nahtlos scrollendes Karussell, implementiert mit nativem Js

Artikel empfehlen

Detaillierte Erläuterung der Fallstricke des Nginx-Proxy-Socket.io-Dienstes

Inhaltsverzeichnis Nginx fungiert als Proxy für z...

So schreiben Sie den Einführungsinhalt der Infoseite der Website

Alle Websites, ob offiziell, E-Commerce, soziale ...

Detaillierte Erklärung der benutzerdefinierten Swiper-Komponente in JavaScript

Inhaltsverzeichnis Effektanzeige Komponenteneinst...

Detaillierte Erklärung der grundlegenden Verwendung des SSH-Befehls ssh-keygen

Die SSH-Public-Key-Authentifizierung ist eine der...

Funktionsprinzip und Beispielanalyse des Linux-NFS-Mechanismus

Was ist NFS? Netzwerkdateisystem Eine Methode ode...

Der Unterschied zwischen char und varchar in MySQL

CHAR- und VARCHAR-Typen sind ähnlich und untersch...

SQL-Implementierung von LeetCode (196. Doppelte Postfächer löschen)

[LeetCode] 196.Doppelte E-Mails löschen Schreiben...

Vue + node realisiert Audioaufzeichnungs- und -wiedergabefunktion

Ergebnis: Der Hauptteil besteht darin, die Codelo...

Detaillierte Erklärung zum Datenaustausch zwischen Vue-Komponenten

Inhaltsverzeichnis 1. In der Projektentwicklung w...

Detaillierter Prozess der FastAPI-Bereitstellung auf Docker

Docker-Lernen https://www.cnblogs.com/poloyy/p/15...