Todos os produtos
Search
Central de documentação

PolarDB:Obter a instrução DDL para criar um IMCI

Última atualização: Jun 28, 2026

Chame dbms_imci.columnar_advise() ou dbms_imci.columnar_advise_by_columns() para gerar a instrução DDL necessária à criação de um In-Memory Columnar Index (IMCI) para uma consulta específica. Ambos os stored procedures retornam apenas as instruções DDL, sem executá-las. Após executar o DDL retornado, repita o processo caso alguma coluna ainda esteja inválida, até que todas as colunas envolvidas na consulta tenham um IMCI válido.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Um cluster PolarDB for MySQL 8.0.1 com versão de revisão 8.0.1.1.30 ou posterior

  • Permissão selecione na tabela de destino

Procedimentos

Escolha o procedimento conforme a abrangência desejada para o IMCI:

Procedimento

Escopo

Quando usar

dbms_imci.columnar_advise()

Todas as colunas nas tabelas consultadas

Para cobertura colunar completa em todas as tabelas acessadas pela consulta

dbms_imci.columnar_advise_by_columns()

Apenas as colunas referenciadas na consulta

Para um IMCI direcionado, limitado às colunas efetivamente usadas pela consulta

Sintaxe

Obtenha a instrução DDL para criar um IMCI para todas as colunas nas tabelas consultadas:

CALL dbms_imci.columnar_advise('<query_string>');

Obtenha a instrução DDL para criar um IMCI apenas para as colunas específicas referenciadas na consulta:

CALL dbms_imci.columnar_advise_by_columns('<query_string>');

Parâmetros

Parâmetro

Tipo

Descrição

query_string

Literal de string

Instrução SQL a ser analisada. Deve ser uma instrução selecione válida; instruções INSERT, atualize e exclua não são suportadas. O valor deve ser uma literal de string, não uma variável ou resultado de consulta. Se a instrução selecione referenciar uma coluna inexistente, o sistema retornará um erro.

Exemplos

Os exemplos a seguir usam duas tabelas, t1 e t2, no banco de dados test.

Defina as tabelas de exemplo:

USE test;

CREATE TABLE t1 (a INT, b INT) ENGINE = InnoDB;
CREATE TABLE t2 (a INT, b INT) ENGINE = InnoDB;

Obter DDL para todas as colunas nas tabelas consultadas

Chame dbms_imci.columnar_advise() com a consulta de destino:

CALL dbms_imci.columnar_advise('SELECT COUNT(t1.a) FROM t1 INNER JOIN t2 ON t1.a = t2.a GROUP BY t1.b');

Saída de exemplo:

+-------------------------------------------+
| DDL_STATEMENT                             |
+-------------------------------------------+
| ALTER TABLE test.t1 COMMENT='COLUMNAR=1'; |
| ALTER TABLE test.t2 COMMENT='COLUMNAR=1'; |
+-------------------------------------------+
2 rows in set (0.00 sec)

A saída contém uma instrução DDL por tabela. Cada instrução ative o IMCI para todas as colunas dessa tabela. Execute essas instruções para crie os IMCIs.

Obter DDL para colunas específicas referenciadas na consulta

Chame dbms_imci.columnar_advise_by_columns() com a mesma consulta:

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');

Saída de exemplo:

+-------------------------------------------------------------------------------------------------------------------------------------------+
| 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)

Como a consulta referencia apenas t1.a, t1.b e t2.a, a saída cria IMCIs somente para essas três colunas. Execute essas instruções para ative o IMCI exatamente nas colunas usadas pela consulta.

Iterar até que todas as colunas estejam válidas

Após a execução das instruções DDL, algumas colunas podem permanecer com status de IMCI inválido. Chame novamente o mesmo stored procedure com a mesma consulta para obter instruções DDL atualizadas e execute-as. Repita esse ciclo até que o stored procedure não retorne mais instruções e o IMCI esteja válido para todas as colunas usadas pela consulta.