MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLに保存されているGENERATEDCOLUMNSは、MySQLの仮想GENERATED COLUMNSとどのように異なりますか?


以下は、MySQLに保存されたGENERATEDCOLUMNSとMySQLの仮想GENERATEDCOLUMNSの基本的な違いです-

ディスク容量に関して

ディスク容量の点で違いが見られる場合、仮想的に生成された列はディスク容量を使用しません。一方、保存された生成された列はディスク領域を占有します。

操作の観点から

操作の点で違いが見られる場合、仮想生成列はINPLACE操作です。つまり、すべてのデータを再度コピーしなくても、テーブル定義が変更されます。一方、保存された生成された列はコピー操作であり、テーブルに新しい列を追加するのと同じコストがかかります。

計算の観点から

仮想的に生成された列では、値は読み取り操作中およびトリガーの前にオンザフライで計算されます。一方、格納された生成列では、値はすべてのINSERTおよびUPDATEステートメントで更新されます。

いつ使用するか

変更がかなりの回数発生するデータには、仮想列の使用を検討する必要があります。仮想列のコストは常にテーブルを読み取ることから発生し、サーバーはその列の値がどうなるかを毎回計算する必要があります。一方、作成後にデータが大幅に変更されない場合、またはまったく変更されない場合は、保存された列の使用を検討する必要があります。


  1. ORDER BY?を使用して、2つの異なるテーブルから2つの異なる列を表示します。

    このために、ORDERBY句とともにUNIONを使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1 (    Amount int ); Query OK, 0 rows affected (0.63 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1 values(234); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable1 val

  2. MySQLの異なるテーブルの列を連結します

    CONCAT()を使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1    -> (    -> FirstName varchar(20)    -> ); Query OK, 0 rows affected (0.90 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1 values('Chris'); Query OK, 1 row affe