日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

獲取創建列存索引的DDL語句

調用存儲過程dbms_imci.columnar_advise(),可以針對某條SQL語句來獲取對應的DDL語句,執行獲取到的DDL語句可以為未被列索引覆蓋的列添加列索引,按順序執行完DDL語句后,即可保證這條SQL語句中使用的所有列都被列索引覆蓋。

前提條件

  • PolarDB集群版本需滿足以下條件之一:

    • PolarDB MySQL版8.0.1版本且修訂版本為8.0.1.1.30及以上。

    • PolarDB MySQL版8.0.2版本且修訂版本為8.0.2.2.12及以上。

  • 您需要具有所操作的表的讀(SELECT)權限。

語法

  • 獲取按表添加列存索引的DDL語句。

    dbms_imci.columnar_advise('<query_string>');
  • 獲取按列添加列存索引的DDL語句。

    dbms_imci.columnar_advise_by_columns('<query_string>');

參數說明

參數

說明

query_string

需要解析的SQL語句。

說明
  • 該SQL語句必須是符合規范的SELECT語句,不支持INSERTUPDATEDELETE等其他DML語句。如果SELECT語句不符合規范(例如引用了不存在的列),會返回相對應的錯誤信息。

  • query_string必須是字符串,不能使用變量值或查詢結果作為輸入。

注意事項

調用該存儲過程僅獲取DDL語句,并不會執行DDL語句。

示例

t1t2表為例,獲取創建列存索引的DDL語句。

  1. 執行如下命令,切換至test庫。

    use test;
  2. 執行如下命令,創建t1t2表。

    create table t1 (a int, b int) engine = innodb;
    create table t2 (a int, b int) engine = innodb;
  3. 調用存儲過程,獲取DDL語句。

    • 獲取按表添加列存索引的DDL語句。

      call 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 rows in set (0.00 sec)

      SELECT語句中t1t2表中的列都沒有創建列索引。調用存儲過程后,分別獲取了按表添加列索引的DDL語句,執行DDL語句后會為t1t2表中所有支持列存索引的列添加列索引。

    • 獲取按列添加列存索引的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('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 rows in set (0.00 sec)

      SELECT語句僅查詢t1.at1.b以及t2.a三列,調用存儲過程dbms_imci.columnar_advise_by_columns()可以得到按列添加列索引的DDL語句,執行DDL語句后,可以確保SELECT語句中的所有列都被列索引覆蓋。