Tous les produits
Search
Centre de documentation

PolarDB:Obtenir l'instruction DDL pour créer un IMCI

Dernière mise à jour :Aug 11, 2026

Appelez dbms_imci.columnar_advise() ou dbms_imci.columnar_advise_by_columns() pour générer l'instruction DDL nécessaire à la création d'un In-Memory Columnar Index (IMCI) pour une requête donnée. Ces procédures stockées retournent uniquement des instructions DDL sans les exécuter. Après exécution du code DDL obtenu, répétez l'opération si certaines colonnes restent invalides, jusqu'à ce que toutes les colonnes impliquées dans la requête disposent d'un IMCI valide.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un cluster PolarDB for MySQL 8.0.1 avec une version de révision 8.0.1.1.30 ou ultérieure

  • L'autorisation SELECT sur la table cible

Procédures

Choisissez la procédure selon l'étendue souhaitée pour l'application de l'IMCI :

Procédure Portée Cas d'usage
dbms_imci.columnar_advise() Toutes les colonnes des tables interrogées Couverture columnar complète requise sur chaque table concernée par la requête
dbms_imci.columnar_advise_by_columns() Uniquement les colonnes référencées dans la requête IMCI ciblé, limité aux colonnes effectivement utilisées par la requête

Syntaxe

Pour obtenir l'instruction DDL permettant de créer un IMCI sur toutes les colonnes des tables interrogées :

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

Pour obtenir l'instruction DDL permettant de créer un IMCI uniquement sur les colonnes spécifiques référencées dans la requête :

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

Paramètres

Paramètre Type Description
query_string Chaîne littérale Instruction SQL à analyser. Doit être une instruction SELECT valide ; les instructions INSERT, UPDATE et DELETE ne sont pas prises en charge. Ce paramètre exige une chaîne littérale, et non une variable ou un résultat de requête. Si l'instruction SELECT fait référence à une colonne inexistante, une erreur est retournée.

Exemples

Les exemples suivants utilisent deux tables, t1 et t2, dans la base de données test.

Préparation des tables d'exemple :

USE test;

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

Obtenir le DDL pour toutes les colonnes des tables interrogées

Appelez dbms_imci.columnar_advise() avec la requête cible :

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

Exemple de sortie :

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

La sortie contient une instruction DDL par table. Chaque instruction active l'IMCI pour toutes les colonnes de la table concernée. Exécutez ces instructions pour créer les IMCI.

Obtenir le DDL pour les colonnes spécifiques référencées dans la requête

Appelez dbms_imci.columnar_advise_by_columns() avec la même requête :

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

Exemple de sortie :

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

La requête ne référençant que t1.a, t1.b et t2.a, la sortie crée des IMCI uniquement pour ces trois colonnes. Exécutez ces instructions pour activer l'IMCI précisément sur les colonnes utilisées par la requête.

Itération jusqu'à validation de toutes les colonnes

Après l'exécution des instructions DDL, certaines colonnes peuvent encore présenter un statut IMCI invalide. Appelez à nouveau la même procédure stockée avec la même requête pour obtenir des instructions DDL mises à jour, puis exécutez-les. Répétez ce cycle jusqu'à ce que la procédure stockée ne retourne plus aucune instruction et que l'IMCI soit valide pour toutes les colonnes utilisées par la requête.