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

PolarDB:IMCIの作成に使用されるDDLステートメントの取得

最終更新日:May 27, 2024

dbms_imci.columnar_advise() ストアドプロシージャを呼び出して、IMCIの作成に使用されるDDLステートメントを取得します。 取得したDDL文を実行すると、IMCIが元々無効な列に有効なIMCIを設定できます。 SQLステートメントに含まれるすべての列でIMCIが有効になるまで、このプロセスを繰り返します。

前提条件

  • PolarDBクラスターでは、次のいずれかのバージョンを使用します。

    • リビジョンバージョンが8.0.1.1.30以降のPolarDB for MySQL 8.0.1のクラスター。

    • リビジョンバージョンが8.0.2.2.12以降のPolarDB for MySQL 8.0.2のクラスター。

  • 指定されたテーブルに対する読み取り (SELECT) 権限があること。

構文

  • テーブルのIMCIの作成に使用されるDDLステートメントを取得します。

    dbms_imci.columnar_advise('<query_string>');
  • 指定された列のIMCIの作成に使用されるDDL文を取得します。

    dbms_imci.columnar_advise_by_columns('<query_string>');

Parameters

パラメーター

説明

query_string

解析されるSQLステートメント。

説明
  • SQL文は有効なSELECT文である必要があります。 INSERTUPDATEDELETEなどの他のDMLステートメントはサポートされていません。 SELECTステートメントにエラーが含まれている場合、エラーメッセージが返されます。 たとえば、存在しない列が含まれます。

  • query_stringの値は文字列である必要があり、変数値またはクエリ結果にすることはできません。

注意事項

ストアドプロシージャを呼び出して、DDL文のみを取得し、DDL文は実行しません。

t1およびt2の表は、以下の実施例で使用される。

  1. 次のステートメントを実行して、testデータベースに切り替えます。

    使用テスト;
  2. 次のステートメントを実行して、t1およびt2テーブルを作成します。

    create table t1 (a int, b int) engine = innodb;
    作成テーブルt2 (a int, b int) engine = innodb; 
  3. ストアドプロシージャを呼び出して、DDLステートメントを取得します。

    • テーブルのIMCIの作成に使用されるDDLステートメントを取得します。

      dbms_imci.columnar_advise('select count(t1.a) from t1 inner join t2 on t1.a = t2.a group by t1.b ');

      サンプル結果:

      + ------------------------------------------- +
      | DDL_STATEMENT |
      + ------------------------------------------- +
      | ALTER TABLE test.t1 COMMENT='COLUMNAR=1 '; |
      | ALTER TABLE test.t2 COMMENT='COLUMNAR=1 '; |
      + ------------------------------------------- +
      セットの2列 (0.00秒) 

      SELECTステートメントに含まれるt1およびt2テーブルの列にはIMCIは作成されません。 ストアドプロシージャを呼び出した後、IMCIの作成に使用されるDDLステートメントを取得します。 DDL文が実行されると、t1およびt2テーブルのすべての列にIMCIが追加されます。

    • 指定された列のIMCIの作成に使用されるDDL文を取得します。

      call dbms_imci.columnar_advise_by_columns('select count(t1.a) from t1 inner join t2 on t1.a = t2.a group by t1.b ');

      サンプル結果:

      mysql> call dbms_imci.columnar_advise_by_columns (t1.aから 'select count(t1.a) from t1 inner join t2 on t1.a = t2.a group by t1.b ');
      + ------------------------------------------------------------------------------------------------------------------------------------------- +
      | DDL_STATEMENT |
      + ------------------------------------------------------------------------------------------------------------------------------------------- +
      | ALTER TABLE test.t1 MODIFY COLUMN a int(11) DEFAULT NULL COMMENT 'COLUMNAR=1 ', MODIFY COLUMN b int(11) DEFAULT NULL COMMENT 'COLUMNAR=1'; |
      | ALTER TABLE test.t2 MODIFY COLUMN a int(11) DEFAULT NULL COMMENT 'COLUMNAR=1 '; |
      + ------------------------------------------------------------------------------------------------------------------------------------------- +
      セットの2列 (0.00秒) 

      SELECTステートメントには、t1.at1.b、およびt2.a列のみが含まれます。 dbms_imci.columnar_advise_by_columns() ストアドプロシージャを呼び出して、指定した列のIMCIの作成に使用されるDDLステートメントを取得できます。 DDLステートメントを実行し、SELECTステートメントに含まれるすべての列でIMCIが有効であることを確認します。