ホームページ >データベース >mysql チュートリアル >MySQL の他の列に基づいて列を効率的に計算するにはどうすればよいですか?

MySQL の他の列に基づいて列を効率的に計算するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-17 07:42:10149ブラウズ

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

MySQL の他の列に基づいて列を効率的に計算する方法

MySQL 5.7.6 以降では、生成されたカラム (生成されたカラム) が導入されています。これは、同じテーブル内の既存のカラムに基づいて新しいカラムの値を自動的に計算する効率的な方法です。ビューとは異なり、生成された列はテーブル定義の一部であり、ソース列が変更されると自動的に更新されます。

仮想生成列と保存された生成列

生成された列は仮想または保存できます:

  • 仮想: テーブル レコードの読み取り時に動的に計算されます。
  • 保存: テーブル レコードの書き込みまたは更新時に計算されます。

この場合、新しいレコードが挿入されるか、既存のレコードが更新されたときに計算値をすぐに利用できる必要があるため、生成された列を保存する方が適切です。

ストレージを使用した生成列の実装

テーブルに pricequantity の 2 つの列があり、値が amountprice の積である新しい列 quantity を追加するとします。ストレージで生成された列は、次の SQL ステートメントを使用して作成できます:

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

列が作成されると、amount が自動的に計算され、テーブル内の各行に保存されます。 price または quantity に変更を加えると、amount の更新がトリガーされます。

テーブルデータを含む例

サンプル データを挿入した後:

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

テーブルは次のようになります:

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

amount 列は必要に応じて自動的に入力および更新されるため、計算された値に効率的にアクセスできます。

以上がMySQL の他の列に基づいて列を効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。