Das Konzept und die Eigenschaften von benutzerdefinierten MySQL-Variablen

Das Konzept und die Eigenschaften von benutzerdefinierten MySQL-Variablen

Ein MySQL Custom Value ist ein temporärer Container zum Speichern von Werten. Solange die Verbindung zum Server aktiv ist, können die Werte im Container gespeichert und verwendet werden. Benutzerdefinierte Variablen können mit einer einfachen SET- oder SELECT-Anweisung wie folgt festgelegt werden:

SETZEN @eins := 1;
SET @min_actor := (SELECT MIN(Schauspieler-ID) FROM sakila.actor);
SET @last_week := CURRENT_DATE-INTERNAL 1 WOCHE;

Nachdem Sie die Variable definiert haben, können Sie sie in SQL-Anweisungen verwenden:

SELECT * FROM Film WHERE Erstellungsdatum <= @letzte_Woche;

Obwohl benutzerdefinierte MySQL-Variablen sehr leistungsfähig sind, müssen Sie sich auch darüber im Klaren sein, dass benutzerdefinierte Variablen selbst Mängel aufweisen, darunter:

  • Benutzerdefinierte Variablen deaktivieren die Abfragezwischenspeicherung.
  • Es darf nicht als Bezeichner mit alternativer Semantik, etwa als Tabellen- oder Spaltenname, oder in einer LIMIT-Klausel verwendet werden.
  • Benutzerdefinierte Variablen basieren auf einer einzelnen Verbindung und können daher nicht verbindungsübergreifend verwendet werden.
  • Wenn Sie Verbindungspools oder dauerhafte Verbindungen verwenden, isolieren benutzerdefinierte Variablen Ihren Code von Interaktionen. Wenn dies auftritt, kann es sich um einen Fehler in Ihrem Code oder im Verbindungspool handeln, aber es ist möglich.
  • In Versionen vor MySQL 5.0 wird zwischen Groß- und Kleinschreibung unterschieden. Seien Sie also vorsichtig (nach MySQL 5.0 wird zwischen Groß- und Kleinschreibung nicht mehr unterschieden).
  • Es ist nicht möglich, den Variablentyp explizit anzugeben. Der tatsächliche Variablentyp hängt von einer unsicheren Typinferenz ab und kann je nach Version unterschiedlich sein. Am besten geben Sie den Typ gleich bei der Definition an, indem Sie beispielsweise 0 zum Festlegen von Ganzzahlvariablen, 0,0 zum Festlegen von Gleitkommavariablen und '' für Zeichenfolgen verwenden. Wenn jedoch später ein neuer Wert angegeben wird, ändert sich der Typ mit dem neuen Wert. Dies liegt daran, dass der Typ der benutzerdefinierten MySQL-Variablen dynamisch ist.
  • In manchen Fällen optimiert der Optimierer möglicherweise benutzerdefinierte Variablen, was dazu führt, dass Abfragen nicht wie erwartet ausgeführt werden.
  • Die Reihenfolge und sogar der Zeitpunkt der Zuweisungen sind ungewiss und hängen vom vom Optimierer gewählten Abfrageplan ab. Daher kann das Endergebnis verwirrend sein.
  • Der Zuweisungsoperator hat eine niedrigere Priorität als alle anderen Operatoren, daher müssen explizite Klammern verwendet werden.
  • Undefinierte Variablen melden keinen Fehler, was leicht zu Fehlern führen kann.

Benutzerdefinierte Variablen können in allen Arten von Anweisungen verwendet werden, nicht nur in SELECT-Anweisungen. Tatsächlich ist dies einer der größten Vorteile benutzerdefinierter Variablen. Beispielsweise können wir komplexe Abfragen umschreiben, um mithilfe von Unterabfragen Sortierberechnungen durchzuführen oder eine kostengünstige UPDATE-Anweisung auszuführen.

Manchmal geht der Optimierer davon aus, dass es sich bei der Variable um eine Konstante zur Kompilierungszeit handelt, und weist ihr keinen Wert zu. Dies kann zu einem merkwürdigen erwarteten Verhalten führen. Dieses Problem lässt sich normalerweise vermeiden, indem benutzerdefinierte Variablenzuweisungen in eine Funktion wie LEAST eingefügt werden. Eine andere Möglichkeit besteht darin, vor der Verwendung zu prüfen, ob die benutzerdefinierte Variable einen Wert hat. Manchmal möchten Sie es tun, manchmal nicht.

Durch ein wenig Experimentieren können wir mit benutzerdefinierten Variablen viele interessante Dinge tun, beispielsweise:

  • Berechnen Sie Summen und Durchschnittswerte.
  • Simulieren Sie FIRST- und LAST-Funktionen für gruppierte Abfragen;
  • Führen Sie mathematische Operationen mit sehr großen Zahlen durch;
  • Konvertieren Sie eine ganze Tabelle in einen MD5-Hash;
  • Filtern Sie Beispielwerte heraus, die nahe bei 0 liegen, aber die festgelegte Grenze überschreiten.
  • Simulieren Sie Lese- und Schreibzeigerpositionen;
  • Betten Sie Variablen in WHERE-Bedingungen ein und zeigen Sie sie in SHOW-Anweisungen an.

Benutzerdefinierte Variablen sind in einigen Anwendungen nützlich, z. B. beim Zählen der Anzahl der Vorkommen sortierter Werte, beim Berechnen der Anzahl von Aktualisierungen und Einfügungen derselben Daten und bei verzögerten gemeinsamen Abfragen. Der nächste Artikel stellt die spezifische Verwendung vor.

Oben finden Sie ausführliche Informationen zum Konzept und den Merkmalen von benutzerdefinierten MySQL-Variablen. Weitere Informationen zu benutzerdefinierten MySQL-Variablen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Beispiel für das Schreiben von Lazy UNION in MySQL unter Verwendung benutzerdefinierter Variablen
  • Grundlegendes zum MySQL-Abfrageoptimierungsprozess
  • MySQL-Abfrageoptimierung: Eine Tabellenoptimierungslösung für 1 Million Daten
  • Detaillierte Erläuterung des MySQL-Mechanismus zur gemeinsamen Abfrageoptimierung
  • MySQL-Abfrageoptimierung: Ursachen und Lösungen für langsame Abfragen
  • Implementierung von MySQL Select in der Unterabfrageoptimierung
  • Methode und Optimierungsprinzip für langsame MySQL-Abfragen
  • Detaillierte Erläuterung von 30 SQL-Abfrageoptimierungstechniken für MySQL-Zehnmillionen großer Datenmengen
  • Erfahrungsaustausch zur Optimierung von MySQL-Big-Data-Abfragen (empfohlen)
  • MySQL-Lösung zur Datenpaging-Abfrageoptimierung auf Millionenebene
  • MySQL-Abfrageoptimierung mit benutzerdefinierten Variablen

<<:  Verwenden Sie Tomcat, um das SpringBoot-War-Paket in einer CentOS-Umgebung bereitzustellen

>>:  Methoden und Techniken zum schnellen Anzeigen von Webseitenbildern

Artikel empfehlen

Vue3.0 implementiert die Fallstudie zum Lupeneffekt

Der zu erzielende Effekt ist: Festes Vergrößern a...

Einfaches Anwendungsbeispiel für MySQL-Trigger

Dieser Artikel veranschaulicht anhand von Beispie...

JavaScript, um das Bild mit der Maus zu bewegen

In diesem Artikel wird der spezifische JavaScript...

JavaScript zum Erreichen aller oder umgekehrter Auswahlfunktionen

In diesem Artikel wird der spezifische JavaScript...

Umfassendes Verständnis der Überwachung von HTML-Formulareingaben

Heute habe ich einen Blogbeitrag über Eingabeerei...

So installieren Sie Theano und Keras auf einem Ubuntu-System

Hinweis: Das System ist Ubuntu 14.04LTS, ein 32-B...

Sperrt Mysql ALTER TABLE die Tabelle beim Hinzufügen von Feldern?

Inhaltsverzeichnis Vor MySQL 5.6 Nach MySQL 5.6 Z...

Zusammenfassung der Verwendung von berechneten Vue-Eigenschaften und -Listenern

1. Berechnete Eigenschaften und Listener 1.1 Bere...

Eine kurze Diskussion über die Semantik von HTML und einige einfache Optimierungen

1. Was ist Semantisierung? Erklärung zum Bing-Wör...

Lösen Sie das Problem des Ablaufs des TLS-Zertifikats (SSL) von Docker

Problemphänomen: [root@localhost ~]# Docker-Image...