columns 语法

最近更新时间:2024-09-05 21:47:01

我的收藏

功能介绍

columns 语法用于查询表的列信息。

支持版本

内核版本 TXSQL 8.0 3.1.15及以上。

适用场景

适用于查询表的列信息较多,需提高查询性能的场景。

使用说明

List columns 的语法

columns 为单列
CREATE TABLE `t1` (
`id` int DEFAULT NULL,
`purchased` varchar(12) DEFAULT NULL,
KEY `idx` (`id`,`purchased`) GLOBAL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
PARTITION BY RANGE (`id`)
SUBPARTITION BY LIST COLUMNS (`purchased`)
SUBPARTITION TEMPLATE
(SUBPARTITION s0 VALUES IN ('0', '1', '2') ENGINE = InnoDB,
SUBPARTITION s1 VALUES IN ('5', '6', '8') ENGINE = InnoDB)
(PARTITION p0 VALUES LESS THAN (1990) ,
PARTITION p1 VALUES LESS THAN (1999));
columns 为多列
CREATE TABLE `t2` (
`id` int DEFAULT NULL,
`purchased` varchar(12) DEFAULT NULL,
KEY `idx` (`id`,`purchased`) GLOBAL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
PARTITION BY RANGE (`id`)
SUBPARTITION BY LIST COLUMNS (`purchased`, `id`)
SUBPARTITION TEMPLATE
(SUBPARTITION s0 VALUES IN (('0', 1), ('1', 1), ('2', 1995)) ENGINE = InnoDB,
SUBPARTITION s1 VALUES IN (('5' ,5), ('6', 6)) ENGINE = InnoDB)
(PARTITION p0 VALUES LESS THAN (1990) ,
PARTITION p1 VALUES LESS THAN (1999));

Range columns 的语法

columns 为单列
CREATE TABLE `t3` (
`id` int DEFAULT NULL,
`purchased` varchar(12) DEFAULT NULL,
KEY `idx` (`id`,`purchased`) GLOBAL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
PARTITION BY RANGE (`id`)
SUBPARTITION BY RANGE COLUMNS (`purchased`)
SUBPARTITION TEMPLATE
(SUBPARTITION s0 VALUES LESS THAN ('5') ENGINE = InnoDB,
SUBPARTITION s1 VALUES LESS THAN ('8') ENGINE = InnoDB)
(PARTITION p0 VALUES LESS THAN (1990) ,
PARTITION p1 VALUES LESS THAN (1999));
columns 为多列
CREATE TABLE `t4` (
`id` int DEFAULT NULL,
`purchased` varchar(12) DEFAULT NULL,
KEY `idx` (`id`,`purchased`) GLOBAL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
PARTITION BY RANGE (`id`)
SUBPARTITION BY RANGE COLUMNS (`purchased`, `id`)
SUBPARTITION TEMPLATE
(SUBPARTITION s0 VALUES LESS THAN ('5', 55) ENGINE = InnoDB,
SUBPARTITION s1 VALUES LESS THAN ('8', 88) ENGINE = InnoDB)
(PARTITION p0 VALUES LESS THAN (1990) ,
PARTITION p1 VALUES LESS THAN (1999));

支持的 columns 数据类型

支持的 columns 数据类型,请参见 官方文档

裁剪说明

二级分区的裁剪方式和一级分区裁剪是一致,并且是独立的。即一级裁剪过滤 where 条件中的 partition key part 获取裁剪后 partition 集合 s1,二级裁剪过滤 where 条件中的 subpartition key part 获取裁剪后 subpartition template 集合 s2,最终的结果是每个 s1 中的 s2 被选中。

限制说明

新增参数 txsql_subpartition_support_multiple_columns 限制多列的使用,关闭时只允许使用单列语法,打开时允许多列和单列语法。
参数名
动态
类型
默认
参数值范围
说明
txsql_subpartition_support_multiple_columns
yes
bool
OFF
OFF/ON
限制多列的使用,关闭时只允许使用单列语法,打开时允许多列和单列语法。