Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine Spalte basierend auf anderen Spalten in MySQL effizient berechnen?

Wie kann ich eine Spalte basierend auf anderen Spalten in MySQL effizient berechnen?

Linda Hamilton
Freigeben: 2025-01-17 07:42:10
Original
146 Leute haben es durchsucht

How Can I Efficiently Calculate a Column Based on Other Columns in MySQL?

So berechnen Sie effizient Spalten basierend auf anderen Spalten in MySQL

MySQL 5.7.6 und höher führt generierte Spalten (Generated Columns) ein. Dies ist eine effiziente Möglichkeit, den Wert neuer Spalten basierend auf vorhandenen Spalten in derselben Tabelle automatisch zu berechnen. Im Gegensatz zu Ansichten sind generierte Spalten Teil der Tabellendefinition und werden automatisch aktualisiert, wenn sich die Quellspalten ändern.

Virtuell generierte Spalten und gespeicherte generierte Spalten

Generierte Spalten können virtuell oder gespeichert sein:

  • Virtuell: Wird beim Lesen von Tabellendatensätzen dynamisch berechnet.
  • Gespeichert: Wird berechnet, wenn ein Tabellendatensatz geschrieben oder aktualisiert wird.

In diesem Fall ist das Speichern einer generierten Spalte sinnvoller, da der berechnete Wert sofort verfügbar sein muss, wenn ein neuer Datensatz eingefügt oder ein bestehender Datensatz aktualisiert wird.

Implementierung generierter Spalten mithilfe von Speicher

Angenommen, eine Tabelle hat zwei Spalten: price und quantity, und wir möchten eine neue Spalte amount hinzufügen, deren Wert das Produkt von price und quantity ist. Vom Speicher generierte Spalten können mit der folgenden SQL-Anweisung erstellt werden:

<code class="language-sql">CREATE TABLE order_details (
  price DOUBLE,
  quantity INT,
  amount DOUBLE AS (price * quantity) STORED
);</code>
Nach dem Login kopieren

Sobald die Spalte erstellt ist, amount wird sie automatisch berechnet und für jede Zeile in der Tabelle gespeichert. Alle Änderungen an price oder quantity lösen eine Aktualisierung von amount aus.

Beispiel mit Tabellendaten

Nach dem Einfügen einiger Beispieldaten:

<code class="language-sql">INSERT INTO order_details (price, quantity) VALUES(100,1),(300,4),(60,8);</code>
Nach dem Login kopieren

Die Tabelle sieht folgendermaßen aus:

id price quantity amount
1 100 1 100
2 300 4 1200
3 60 8 480

amount Spalten werden bei Bedarf automatisch ausgefüllt und aktualisiert, was einen effizienten Zugriff auf berechnete Werte ermöglicht.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Spalte basierend auf anderen Spalten in MySQL effizient berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage