sql >> データベース >  >> RDS >> Sqlserver

計算列がSQLServerで「永続化」されているかどうかを確認する方法

    SQL Serverで計算列を作成する場合、「永続的」としてフラグを立てるオプションがあります。永続化された計算列は、テーブルに物理的に格納されている列です。永続化するように指定しない場合、列の値は、列に対してクエリを実行するたびに計算されます。

    sys.computed_columnsにクエリを実行できます 計算列が永続としてマークされているかどうかを確認するためのシステムカタログビュー。

    例1-1つの計算列のチェック

    これが私のテスト環境で実行した例です。この場合、TotalValueという計算列をチェックしています 。

    SELECT is_persisted
    FROM sys.computed_columns
    WHERE name = 'TotalValue';
    

    結果:

    +----------------+
    | is_persisted   |
    |----------------|
    | 1              |
    +----------------+
    

    この場合、列は 持続しました。

    同じ名前の計算列が複数ある場合は、テーブル名をWHEREに追加することもできます。 条項:

    SELECT is_persisted
    FROM sys.computed_columns
    WHERE name = 'TotalValue'
    AND OBJECT_NAME(object_id) = 'Products';
    

    例2–すべての計算列を返す

    この例では、すべての計算列とそのis_persistedを返します。 値。

    SELECT 
      OBJECT_NAME(object_id) AS [Table],
      name AS [Computed Column],
      is_persisted
    FROM sys.computed_columns;
    

    結果:

    +----------+-------------------+----------------+
    | Table    | Computed Column   | is_persisted   |
    |----------+-------------------+----------------|
    | Person   | FullName          | 0              |
    | Products | TotalValue        | 1              |
    +----------+-------------------+----------------+
    

    例3–スキーマを含める

    この例では、sys.objectsと結合します 結果にスキーマを含めるためのビュー。

    SELECT 
      SCHEMA_NAME(o.schema_id) AS [Schema],
      OBJECT_NAME(cc.object_id) AS [Table],
      cc.name AS [Computed Column],
      cc.is_persisted
    FROM sys.computed_columns cc
    INNER JOIN sys.objects o
    ON o.object_id = cc.object_id;
    

    結果:

    +----------+----------+-------------------+----------------+
    | Schema   | Table    | Computed Column   | is_persisted   |
    |----------+----------+-------------------+----------------|
    | dbo      | Person   | FullName          | 0              |
    | dbo      | Products | TotalValue        | 1              |
    +----------+----------+-------------------+----------------+
    

    1. WHM / cPanelサーバーでのProxySQLを使用したMySQLレプリケーション:パート1

    2. T-SQLの週番号から日付を取得する

    3. SQL Server 2008Expressの同じサーバーにSQLServerデータベースを複製するにはどうすればよいですか?

    4. 記憶圧分析のリスク状態