すべてのプロダクト
Search
ドキュメントセンター

PolarDB:テーブルを作成するときにIMCIを作成する

最終更新日:Jul 17, 2024

このトピックでは、テーブルを作成するときにメモリ内列インデックス (IMCI) を作成する方法について説明します。

前提条件

読み取り専用列ストアノードをクラスターに追加してクラスターエンドポイントを設定したら、クラスターエンドポイントを使用してクラスターに接続し、SQLステートメントを使用してIMCIを作成および管理できます。

  • 読み取り専用列ストアノードが追加されました。 詳細については、「読み取り専用列ストアノードの追加」をご参照ください。

  • クラスターエンドポイントが設定されています。 手動および自動の要求配信ソリューションを使用して、行ストアおよび列ストアノードに要求を配信できます。 ビジネス要件に基づいてリクエスト配布ソリューションを選択し、クラスターエンドポイントを設定できます。 詳細については、「リクエスト配布の概要」をご参照ください。

  • データベースクラスターは、クラスターエンドポイントを使用して接続されています。 詳細については、「クラスターへの接続」をご参照ください。

IMCIの作成

  • CREATE TABLE構文を使用します。

    • CREATE TABLEステートメントを使用してテーブルを作成する場合、COLUMNAR=1文字列をCOMMENTフィールドに追加してIMCIを作成できます。 この追加では、ステートメントの他のパラメーターを変更する必要はなく、他のパラメーターにも影響しません。

    • 1つの列にIMCIを追加するには、列のCOMMENTフィールドにCOLUMNAR=1文字列を追加します。 データ型がIMCIの作成をサポートするすべての列にIMCIを追加するには、CREATE TABLEステートメントの末尾にあるCOMMENTフィールドに文字列を追加します。

      説明
      • PolarDB for MySQL 8.0.1.1.25から始めて、BLOBまたはTEXTデータ型の列にIMCIを作成できます。

      • PolarDB for MySQL 8.0.1.1.28から始めて、ENUMデータ型の列にIMCIを作成できます。

      • PolarDB for MySQL 8.0.1.1.29から始めて、パーティションテーブルにIMCIを作成できます。

      • PolarDB for MySQL 8.0.1.1.30から始めて、BIT、JSON、またはGeoデータ型の列にIMCIを作成できます。

      • SETデータ型の列にIMCIを作成することはできません。

    例:

    CREATE TABLE t1(
      col1 INT COMMENT 'COLUMNAR=1',
      col2 DATETIME COMMENT 'COLUMNAR=1',
      col3 VARCHAR(200)
    ) ENGINE InnoDB;
    
    CREATE TABLE t2(
      col1 INT,
      col2 DATETIME,
      col3 VARCHAR(200)
    ) ENGINE InnoDB COMMENT 'COLUMNAR=1';

    前述の例では、

    • IMCIは、t1テーブルのcol1列とcol2列に作成されます。

    • t2テーブルのすべての列にIMCIが作成されます。 col1、col2、およびcol3列のデータ型は、IMCIの作成をサポートしています。

  • CREATE TABLE LIKE構文を使用します。CREATE TABLE LIKE文を実行してテーブルを作成し、ソーステーブルにIMCIが含まれている場合、ターゲットテーブルに同じIMCIが含まれます。

  • CREATE TABLEを使用します... SELECT構文: CREATE TABLEを実行する場合... SELECT文を使用してテーブルを作成します。COLUMNAR=1文字列をテーブルのCOMMENTフィールドに追加して、テーブルのすべての列にIMCIを作成できます。 ただし、CREATE TABLEを使用することはできません。 特定の列にIMCIを個別に作成するSELECT文。

    例:

    CREATE TABLE t3(
      col1 INT,
      col2 DATETIME,
      col3 VARCHAR(200)
    ) ENGINE InnoDB;
    
    CREATE TABLE t4 COMMENT 'COLUMNAR=1' SELECT col1, col2 FROM t3;

    前述の例では、

    COMMENT'COLUMNAR=1 '文字列は、t4テーブルに有効です。 このステートメントは、col1列とcol2列、およびその後追加された列を含む、t4テーブルのすべての列にIMCIを作成します。

説明

COLUMNAR=1文字列をCOMMENTフィールドに追加する場合、次の点に注意してください。 2) COLUMNAR=1とCOMMENTフィールドの元の部分の間に区切り文字を使用する必要はありません。 3) COLUMNAR=1を追加しても元のパーツには影響しません。

テーブルのIMCI構造の表示

  • 構文: SHOW CREATE TABLE <tablename> FULLステートメントを実行して、テーブルのIMCI確立情報を表示できます。

  • 例:

    SHOW CREATE TABLE test.t2;
    *************************** 1. row ***************************
           Table: t2
    Create Table: CREATE TABLE `t2` (
      `col1` int(11) DEFAULT NULL,
      `col2` datetime DEFAULT NULL,
      `col3` varchar(200) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='COLUMNAR=1'
    
    SHOW CREATE TABLE test.t2 FULL;
    *************************** 1. row ***************************
           Table: t2
    Create Table: CREATE TABLE `t2` (
      `col1` int(11) DEFAULT NULL,
      `col2` datetime DEFAULT NULL,
      `col3` varchar(200) DEFAULT NULL,
      COLUMNAR INDEX (`col1`,`col2`,`col3`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='COLUMNAR=1'

    前述の例では、

    • SHOW CREATE TABLE <tablename> ステートメントには、COMMENTフィールドの設定のみが表示されます。 IMCI確立情報は表示されない。

    • IMCIの確立情報を表示するには、SHOW CREATE TABLE <tablename> FULLステートメントを実行する必要があります。 IMCI確立情報は、COLUMNAR INDEXフィールドで確認できます。