このトピックでは、テーブルを作成するときにメモリ内列インデックス (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フィールドで確認できます。