Todos los productos
Search
Centro de documentos

PolarDB:Crear IMCI al crear una tabla

Última actualización: Sep 05, 2026

Cuando crea una tabla en PolarDB for MySQL, puede habilitar los índices de columna en memoria (IMCI) durante la creación. Para ello, agregue COLUMNAR=1 al campo COMMENT. Así evita el costo adicional de ejecutar ALTER TABLE sobre tablas grandes después de haberlas creado. PolarDB for MySQL admite tres variantes de CREATE TABLE, cada una con un comportamiento distinto para los IMCI.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

Funcionamiento de la creación de IMCI en las variantes de CREATE TABLE

Los tres métodos utilizan la anotación COLUMNAR=1 en el campo COMMENT. La siguiente tabla resume el alcance y las limitaciones de cada método para que elija el adecuado antes de escribir su instrucción DDL.

Método

Alcance del IMCI

Compatible con IMCI por columna

CREATE TABLE

Una sola columna o todas las columnas

Sí

CREATE TABLE LIKE

Heredado de la tabla de origen (automático)

No aplica

CREATE TABLE ... SELECT

Solo todas las columnas

No

Crear un IMCI con CREATE TABLE

Agregue COLUMNAR=1 al campo COMMENT de una columna específica para indexarla. También puede agregarlo al COMMENT de nivel de tabla para indexar de inmediato todas las columnas compatibles.

Indexar columnas específicas:

CREATE TABLE t1(
  col1 INT COMMENT 'COLUMNAR=1',
  col2 DATETIME COMMENT 'COLUMNAR=1',
  col3 VARCHAR(200)
) ENGINE InnoDB;

Esto crea IMCI en col1 y col2. La columna col3 no tiene IMCI.

Indexar todas las columnas:

CREATE TABLE t2(
  col1 INT,
  col2 DATETIME,
  col3 VARCHAR(200)
) ENGINE InnoDB COMMENT 'COLUMNAR=1';

Esto crea IMCI en todas las columnas cuyos tipos de datos sean compatibles con esta función. En este caso, se trata de col1, col2 y col3.

COLUMNAR no distingue entre mayúsculas y minúsculas. No se requiere ningún delimitador entre COLUMNAR=1 y el contenido existente de COMMENT. Además, la anotación no afecta dicho contenido.

Tipos de datos compatibles

Se pueden crear IMCI en la mayoría de los tipos de datos de columna. A continuación se muestran los tipos que empezaron a ser compatibles en versiones específicas de PolarDB for MySQL:

Tipo de dato

Versión mínima

BLOB, TEXT

8.0.1.1.25

ENUM

8.0.1.1.28

Tablas particionadas

8.0.1.1.29

BIT, JSON, Geo

8.0.1.1.30

No es posible crear IMCI en columnas con el tipo de dato SET.

Crear un IMCI con CREATE TABLE LIKE

Si la tabla de origen cuenta con un IMCI, la tabla de destino hereda automáticamente el mismo IMCI. No se necesita ninguna anotación adicional.

-- If source_table has an IMCI, dest_table inherits the same IMCI.
CREATE TABLE dest_table LIKE source_table;

Crear un IMCI con CREATE TABLE ... SELECT

Agregue COLUMNAR=1 al COMMENT de nivel de tabla para crear IMCI en todas las columnas de la nueva tabla, incluidas las que agregue más adelante. Esta sintaxis no admite la creación de IMCI por columna.

CREATE TABLE t3(
  col1 INT,
  col2 DATETIME,
  col3 VARCHAR(200)
) ENGINE InnoDB;

CREATE TABLE t4 COMMENT 'COLUMNAR=1' SELECT col1, col2 FROM t3;

La tabla t4 obtiene IMCI en col1, col2 y cualquier columna que se agregue posteriormente.

Comprobar la estructura del IMCI

Ejecute SHOW CREATE TABLE <tablename> FULL para confirmar que los IMCI se crearon correctamente. El comando estándar SHOW CREATE TABLE solo muestra la configuración del campo COMMENT, pero no incluye los detalles del IMCI.

SHOW CREATE TABLE test.t2;

Salida (no se muestran los detalles del IMCI):

*************************** 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;

Salida (los detalles del IMCI aparecen en el campo COLUMNAR INDEX):

*************************** 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'

Pasos siguientes

  • Para agregar IMCI a tablas existentes, consulte la documentación de ALTER TABLE.

  • Para gestionar y supervisar los IMCI, consulte la descripción general de la gestión de IMCI.