Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine Spalte basierend auf anderen Spalten in MySQL effizient berechnen?
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:
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>
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>
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!