次の方法で共有


In-Memory OLTP でサポートされているデータ型

適用対象:SQL ServerAzure SQL データベースAzure SQL Managed Instance

この記事では、次のインメモリ OLTP 機能でサポートされていないデータ型の一覧を示します。

  • メモリ最適化テーブル
  • ネイティブ コンパイル Transact-SQL (T-SQL) モジュール

サポートされていないデータ型

次のデータの種類はサポートされていません。

サポートされている注目すべきデータ型

In-Memory OLTP 機能は、ほとんどのデータ型をサポートします。 次の一覧は、明示的に注目する価値があります。

文字列型とバイナリ型 詳細情報
binaryvarbinary binary と varbinary
charvarchar char と varchar
ncharnvarchar nchar と nvarchar

上記の文字列とバイナリ データ型の場合、SQL Server 2016 (13.x) 以降:

  • 個々のメモリ最適化テーブルには 、nvarchar(4000) などの複数の長い列を含めることもできます。ただし、その長さは 8,060 バイトの物理行サイズを超えます。

  • メモリ最適化テーブルには、最大長の文字列と 、varchar(max) などのデータ型のバイナリ列を含めることができます。

行外の LOB 列およびその他の列の特定

SQL Server 2016 (13.x) 以降のバージョンでは、メモリ最適化テーブルでは 行外列がサポートされています。これにより、1 つのテーブル行が 8,060 バイトを超える可能性があります。 次の Transact-SQL SELECT ステートメントは、メモリ最適化テーブルの行外のすべての列を報告します。

  • インデックス キー列はすべて行内に格納されます。
    • 一意でないインデックス キーには、メモリ最適化テーブルに null 許容列を含めることができます。
    • インデックスは、メモリ最適化テーブルで UNIQUE として宣言できます。
  • すべての LOB 列は行外に格納されます。
  • max_length-1は、ラージ オブジェクト (LOB) カラムを示します。
SELECT OBJECT_NAME(m.object_id) AS [table],
       c.name AS [column],
       c.max_length
FROM sys.memory_optimized_tables_internal_attributes AS m
     INNER JOIN sys.columns AS c
         ON m.object_id = c.object_id
        AND m.minor_id = c.column_id
WHERE m.type = 5;

その他のデータ型

その他の型 詳細情報
テーブル の種類 メモリ最適化を使用した一時テーブルとテーブル変数の高速化