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

Confluence mit Docker bereitstellen

1. Umweltanforderungen 1. Docker 17 und höher wur...

Detaillierte Erläuterung der Vue-Lebenszyklusfunktionen

Inhaltsverzeichnis Lebenszyklusfunktionen Allgeme...

So führen Sie Hadoop aus und erstellen Images in Docker

Wir erfinden das Rad neu: Hier verwenden wir Neuv...

Vue führt weltweit SCSS (Mixin) ein

Inhaltsverzeichnis 1. mixin.scss 2. Einzeldateinu...

Wird der veraltete Docker durch Podman ersetzt?

Das Kubernetes-Team hat vor Kurzem angekündigt, d...

Detaillierte Erläuterung der Systemeingabe- und -ausgabeverwaltung in Linux

Verwaltung der Ein- und Ausgaben im System 1. Ver...

So verwenden Sie die REM-Anpassung in Vue

1. Entwicklungsumgebung vue 2. Computersystem Win...

Unterschied zwischen MySQL Btree-Index und Hash-Index

In MySQL werden die meisten Indizes (wie PRIMARY ...

Einführung in die Verwendung von this in HTML-Tags

Zum Beispiel: Code kopieren Der Code lautet wie fo...