TDSQL-C MySQL 版 columns 语法

这篇说说腾讯云TXSQL 8.0内核中二级分区支持columns语法的功能,适用于需提高分区裁剪查询性能的场景,支持List和Range两种columns语法,并可通过参数控制多列使用。 List/Range columns语法:支持单列和多列定义二级分区,语法与一级分区一致。 裁剪说明:二级分区与一级分区独立裁剪,最终取两者交集结果。 限制说明:新增参数txsql_subpartition_support_mult。

相关产品
TDSQL-C MySQL 版 产品页,含版本规格、价格与购买入口。

一、功能介绍

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 限制多列的使用,关闭时只允许使用单列语法,打开时允许多列和单列语法。
赞 (0)
上一篇 4天前
下一篇 4天前