重要このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。警告これはまだ実験的機能です。本番環境で使用することはお勧めしません。列とは異なり、生成された列の値は、列定義の式によって計算されます。DEFAULTのみを使用してください。仮想生成列はstorageを占有せず、読み取り時に計算されます。storageを占有します。仮想生成列と比較して、格納された生成列は読み取りパフォーマンスが優れていますが、より多くのディスク領域を占有します。仮想列か格納列かに関係なく、生成された列に索引を作成できます。データ型からデータを抽出し、データのインデックスを作成することです。型の列に直接インデックスを作成することはできません。スキーマはサポートされていません。列にインデックスを付けるには、最初にそれを生成された列として抽出する必要があります。例としてaddress_infoのcityフィールドを使用すると、仮想生成列を作成し、それにインデックスを追加できます。city列は仮想生成列であり、インデックスがあります。次のクエリでは、インデックスを使用して実行を高速化できます。='Beijing'を満たす行のHANDLEを読み取り、次にこのHANDLEを使用して行のデータを読み取ることがわかります。NULLでなければならないという制約を適用する場合は、仮想生成列を次のように定義できます。(city));生成された列の検証INSERTとUPDATEステートメントの両方で、仮想列の定義がチェックされます。検証に合格しない行はエラーを返します。式を対応する生成された列に置き換えます。これにより、オプティマイザは実行計画の構築中にそのインデックスを考慮に入れることができます。次の例では、式a+1の生成列を作成し、インデックスを追加します。設定されている場合、置換は行われません。式評価の型変換を参照してください。sec)ノート:置換する式と生成される列が両方とも文字列型で長さが異なる場合でも、システム変数tidb_enable_unsafe_substituteをONに設定することで式を置換できます。このシステム変数を構成するときは、生成された列によって計算された値が、生成された列の定義を厳密に満たしていることを確認してください。しないと、長さの違いによってデータが切り捨てられ、誤った結果になる可能性があります。問題#35490を参照してください。生成された列の現在の制限は次のとおりです。TABLEから追加することはできません。TABLEステートメントを使用して格納された生成列を通常の列に変換することも、通常の列を格納された生成列に変換することもできません。TABLEステートメントを使用して、格納された生成列の式を変更することはできません。JSON関数すべてがサポートされているわけではありません。現在、生成列インデックス置換ルールは、生成列が仮想生成列の場合にのみ有効です。格納された生成列では無効ですが、生成列自体を直接使用してインデックスを使用することはできます。Policy/Legal。