基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
索引字段过长导致创建索引失败
更新时间:2025-05-09 08:17
问题现象

问题原因
用户建表 SQL 如下。
CREATE TABLE `ut_table_with_list_partition_from_engine_os_ob` (
`id` bigint(20) DEFAULT NULL,
`name` varchar(8192) DEFAULT NULL,
`sex` varchar(8192) DEFAULT NULL
) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0
partition by list columns(`sex`)
(partition F values in ('F'));
索引字段最长为 16384 个字节,name 字段是 8192 个字符,按一个字符占 4 个字节,那么会超过 16384 个字节的限制。
适用版本
OceanBase 数据库所有社区版本。
解决方法
确认 name 字段是否需要这么长的存储。
使用前缀索引的方式。
CREATE INDEX `idx_ut_table_with_list_partition_from_engine_os_ob` ON `ut_table_with_list_partition_from_engine_os_ob` (name(10)); Query OK, 0 rows affected (0.456 sec)